1D Case - Figure 10#
Comparison of residual loss
\[L_r = \frac{\lambda_1}{n_{\Omega}}\sum_{i=0}^{n_{\Omega}-1}\left( \nabla \cdot \underline{\underline{\sigma}} - \underline f \right)^2 + \frac{\lambda_1}{n_{\Omega}}\sum_{i=0}^{n_{\Omega}-1}\left( \underline{\underline{\sigma}}(\underline u) - \underline{\underline{\sigma}} \right)^2 \]
weak formulation loss
\[ L_w = \sum_{i=0}^{n-1} \left(\int_\Omega \underline{\underline{\sigma}}(\underline u):\underline{\underline{\epsilon}}(\underline u_i^*) - \int_{\partial\Omega_N} \underline t \underline u_i^* - \int_\Omega\underline f \underline u_i^*\right)^2\]
and potential energy loss
\[L_p = \frac{1}{2}\int_\Omega \underline{\underline{\sigma}}(\underline u):\underline{\underline{\epsilon}}(\underline u)
- \int_\Omega\underline f \underline u
- \int_{\partial\Omega_N} \underline t \underline u\]
#%% Libraries import
import sys
# sys.path.append("../neurom/")
from neurom.HiDeNN_PDE import MeshNN, NeuROM, MeshNN_2D, MeshNN_1D
# Import pre-processing functions
import neurom.src.Pre_processing as pre
# Import torch librairies
import torch
import torch.nn as nn
# Import Training funcitons
from neurom.src.Training import Training_1D_FEM_LBFGS, Training_1D_Mixed_LBFGS
#Import post processing libraries
import neurom.Post.Plots as Pplot
import time
import os
import torch._dynamo as dynamo
mps_device = torch.device("mps")
from importlib import reload # Python 3.4+
import tomllib
import numpy as numpy
import argparse
* Executing job in Configuration/config_2D.toml
* WARNING: could not load tikzplotlib
# Load default configuration file (defines dimension, domain, boundary conditions, number of training iterations etc.)
Default_config_file = 'Configurations/config_1D.toml'
with open(Default_config_file, mode="rb") as f:
config = tomllib.load(f)
# Experiment setting: Potential energy loss
# 6 mesh resolutions, 5-point quadrature
mesh_resolution_pe = [10,21,41,80,160]
loss_u_pe = numpy.zeros((len(mesh_resolution_pe)))
loss_grad_pe = numpy.zeros((len(mesh_resolution_pe)))
config["interpolation"]["n_integr_points"] = 5
config["solver"]["IntegralMethod"] = "Gaussian_quad"
config["solver"]["FrozenMesh"] = True
for res in range(len(mesh_resolution_pe)):
config["interpolation"]["np"] = mesh_resolution_pe[res]
# Load parameters
if config["interpolation"]["dimension"] == 1:
Mat = pre.Material( flag_lame = True, # If True should input lmbda and mu instead of E and nu
coef1 = config["material"]["E"], # Young Modulus
coef2 = config["geometry"]["A"] # Section area of the 1D bar
)
elif config["interpolation"]["dimension"] == 2:
try:
Mat = pre.Material( flag_lame = False, # If True should input lmbda and mu instead of E and nu
coef1 = config["material"]["E"], # Young Modulus
coef2 = config["material"]["nu"] # Poisson's ratio
)
except:
Mat = pre.Material( flag_lame = True, # If True should input lmbda and mu instead of E and nu
coef1 = config["material"]["lmbda"], # First Lame's coef
coef2 = config["material"]["mu"] # Second Lame's coef
)
MaxElemSize = pre.ElementSize(
dimension = config["interpolation"]["dimension"],
L = config["geometry"]["L"],
order = config["interpolation"]["order"],
np = config["interpolation"]["np"],
)
Excluded = []
Mesh_object = pre.Mesh(
config["geometry"]["Name"], # Create the mesh object
MaxElemSize,
config["interpolation"]["order"],
config["interpolation"]["dimension"]
)
Mesh_object.AddBorders(config["Borders"]["Borders"])
Mesh_object.AddBCs( # Include Boundary physical domains infos (BCs+volume)
config["geometry"]["Volume_element"],
Excluded,
config["DirichletDictionryList"]
)
Mesh_object.MeshGeo() # Mesh the .geo file if .msh does not exist
Mesh_object.ReadMesh()
print(config["solver"]["IntegralMethod"])
print()
# Vtk file not necessary if not using reference element implementation
if config["solver"]["IntegralMethod"] == "Gaussian_quad":
Mesh_object.ExportMeshVtk1D()
# Build the assembly weight matrix if needed
if config["interpolation"]["dimension"] ==1 and config["solver"]["IntegralMethod"] == "Trapezoidal":
Mesh_object.AssemblyMatrix()
if int(Mesh_object.dim) != int(Mesh_object.dimension):
raise ValueError("The dimension of the provided geometry does not match the job dimension")
if config["solver"]["TrainingStrategy"]=="Integral":
match config["solver"]["IntegralMethod"]:
case "Gaussian_quad":
Model_FEM = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
case "Trapezoidal":
Model_FEM = MeshNN(Mesh_object)
if config["solver"]["TrainingStrategy"]=="Mixed":
if config["solver"]["IntegralMethod"] == "Gaussian_quad":
Model_FEM = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
Model_test = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
Model_test.Freeze_Mesh()
# Default setting
Model_FEM.Freeze_Mesh()
Model_FEM.UnFreeze_FEM()
if not config["solver"]["FrozenMesh"]:
Model_FEM.UnFreeze_Mesh()
if config["solver"]["TrainingStrategy"]=="Mixed":
Model_FEM = Training_1D_FEM_LBFGS(Model_FEM, config, Mat, Model_test)
else:
Model_FEM = Training_1D_FEM_LBFGS(Model_FEM, config, Mat)
loss_u_pe[res], loss_grad_pe[res] = Pplot.Normalized_error_1D(Model_FEM,config,Mat)
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
Gaussian_quad
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = -0.01360793404964395
loss_decrease = 1.013607934049644
epoch = 2
loss = -0.01360793404964395
loss_decrease = 0.0
epoch = 3
loss = -0.01360793404964395
loss_decrease = 0.0
epoch = 4
loss = -0.01360793404964395
loss_decrease = 0.0
epoch = 5
loss = -0.01360793404964395
loss_decrease = 0.0
epoch = 6
loss = -0.01360793404964395
loss_decrease = 0.0
* Final training loss: -1.3608e-02
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
Gaussian_quad
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = -0.026427602317554283
loss_decrease = 1.0264276023175543
epoch = 2
loss = -0.026532093243903283
loss_decrease = 0.003953855710913004
epoch = 3
loss = -0.026532093243903283
loss_decrease = 0.0
epoch = 4
loss = -0.026532093243903283
loss_decrease = 0.0
epoch = 5
loss = -0.026532093243903283
loss_decrease = 0.0
epoch = 6
loss = -0.026532093243903283
loss_decrease = 0.0
epoch = 7
loss = -0.026532093243903283
loss_decrease = 0.0
* Final training loss: -2.6532e-02
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
Gaussian_quad
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 0.28993858419167323
loss_decrease = 0.7100614158083267
epoch = 2
loss = -0.029972669330848564
loss_decrease = 1.1033759249891149
epoch = 3
loss = -0.030008097682752442
loss_decrease = 0.001182021911789299
epoch = 4
loss = -0.030008097682752442
loss_decrease = 0.0
epoch = 5
loss = -0.030008097682752442
loss_decrease = 0.0
epoch = 6
loss = -0.030008097682752442
loss_decrease = 0.0
epoch = 7
loss = -0.030008097682752442
loss_decrease = 0.0
epoch = 8
loss = -0.030008097682752442
loss_decrease = 0.0
* Final training loss: -3.0008e-02
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
Gaussian_quad
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 0.6288340579168725
loss_decrease = 0.3711659420831275
epoch = 2
loss = 0.3066434323855191
loss_decrease = 0.5123619204065832
epoch = 3
loss = -0.0303123071384417
loss_decrease = 1.098851969215934
epoch = 4
loss = -0.031085920232714316
loss_decrease = 0.025521419096850274
epoch = 5
loss = -0.031120090704753377
loss_decrease = 0.0010992266525570056
epoch = 6
loss = -0.031120090704753377
loss_decrease = 0.0
epoch = 7
loss = -0.031120090704753377
loss_decrease = 0.0
epoch = 8
loss = -0.031120090704753377
loss_decrease = 0.0
epoch = 9
loss = -0.031120090704753377
loss_decrease = 0.0
epoch = 10
loss = -0.031120090704753377
loss_decrease = 0.0
* Final training loss: -3.1120e-02
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 160
Gaussian_quad
mesh.NNodes = 160
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 1.2997354148436913
loss_decrease = -0.29973541484369126
epoch = 2
loss = 0.6372422737786037
loss_decrease = 0.5097138490642423
epoch = 3
loss = 0.4188182025065029
loss_decrease = 0.34276456578583414
epoch = 4
loss = 0.30676373446269867
loss_decrease = 0.26754918332868877
epoch = 5
loss = -0.029269310907091256
loss_decrease = 1.0954132044270386
epoch = 6
loss = -0.03061032842049393
loss_decrease = 0.04581650444929942
epoch = 7
loss = -0.031132497854774798
loss_decrease = 0.017058602805818633
epoch = 8
loss = -0.03137726240708605
loss_decrease = 0.007862027436828706
epoch = 9
loss = -0.0314177333104379
loss_decrease = 0.0012898162633433801
epoch = 10
loss = -0.03141774172382049
loss_decrease = 2.6779088436147684e-07
epoch = 11
loss = -0.03141774172382049
loss_decrease = 0.0
epoch = 12
loss = -0.03141774172382049
loss_decrease = 0.0
epoch = 13
loss = -0.03141774172382049
loss_decrease = 0.0
epoch = 14
loss = -0.03141774172382049
loss_decrease = 0.0
epoch = 15
loss = -0.03141774172382049
loss_decrease = 0.0
* Final training loss: -3.1418e-02
# Experiment setting: Weak formulation loss
# 4 mesh resolutions, 3-,4- and 5-point quadrature, fixed mesh
mesh_resolution_w = [10,21,41,80]
quadrature_points = [3,4,5]
loss_u_w = numpy.zeros((len(mesh_resolution_w),len(quadrature_points)))
loss_grad_w = numpy.zeros((len(mesh_resolution_w),len(quadrature_points)))
config["solver"]["TrainingStrategy"] = "Mixed"
config["solver"]["IntegralMethod"] = "Gaussian_quad"
config["solver"]["FrozenMesh"] = True
for res in range(len(mesh_resolution_w)):
config["interpolation"]["np"] = mesh_resolution_w[res]
for q in range(len(quadrature_points)):
config["interpolation"]["n_integr_points"] = quadrature_points[q]
# Load parameters
Mat = pre.Material( flag_lame = True, # If True should input lmbda and mu instead of E and nu
coef1 = config["material"]["E"], # Young Modulus
coef2 = config["material"]["A"] # Poisson's ratio
)
MaxElemSize = pre.ElementSize(
dimension = config["interpolation"]["dimension"],
L = config["geometry"]["L"],
order = config["interpolation"]["order"],
np = config["interpolation"]["np"],
)
Excluded = []
Mesh_object = pre.Mesh(
config["geometry"]["Name"], # Create the mesh object
MaxElemSize,
config["interpolation"]["order"],
config["interpolation"]["dimension"]
)
Mesh_object.AddBorders(config["Borders"]["Borders"])
Mesh_object.AddBCs( # Include Boundary physical domains infos (BCs+volume)
config["geometry"]["Volume_element"],
Excluded,
config["DirichletDictionryList"]
)
Mesh_object.MeshGeo() # Mesh the .geo file if .msh does not exist
Mesh_object.ReadMesh()
print(config["solver"]["IntegralMethod"])
print()
# Vtk file not necessary if not using reference element implementation
if config["solver"]["IntegralMethod"] == "Gaussian_quad":
Mesh_object.ExportMeshVtk1D()
# Build the assembly weight matrix if needed
if config["interpolation"]["dimension"] ==1 and config["solver"]["IntegralMethod"] == "Trapezoidal":
Mesh_object.AssemblyMatrix()
if int(Mesh_object.dim) != int(Mesh_object.dimension):
raise ValueError("The dimension of the provided geometry does not match the job dimension")
if config["solver"]["TrainingStrategy"]=="Integral":
match config["solver"]["IntegralMethod"]:
case "Gaussian_quad":
Model_FEM = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
case "Trapezoidal":
Model_FEM = MeshNN(Mesh_object)
if config["solver"]["TrainingStrategy"]=="Mixed":
if config["solver"]["IntegralMethod"] == "Gaussian_quad":
Model_FEM = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
Model_test = MeshNN_1D(Mesh_object, config["interpolation"]["n_integr_points"])
Model_test.Freeze_Mesh()
# Default setting
Model_FEM.Freeze_Mesh()
Model_FEM.UnFreeze_FEM()
if not config["solver"]["FrozenMesh"]:
Model_FEM.UnFreeze_Mesh()
if config["solver"]["TrainingStrategy"]=="Mixed":
Model_FEM = Training_1D_FEM_LBFGS(Model_FEM, config, Mat, Model_test)
else:
Model_FEM = Training_1D_FEM_LBFGS(Model_FEM, config, Mat)
loss_u_w[res,q], loss_grad_w[res,q] = Pplot.Normalized_error_1D(Model_FEM,config,Mat)
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
Gaussian_quad
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 0.04996717398955754
loss_decrease = 0.9500328260104425
epoch = 2
loss = 1.5801587626118599e-10
loss_decrease = 0.9999999968376062
epoch = 3
loss = 1.5801587626118599e-10
loss_decrease = 0.0
epoch = 4
loss = 1.5801587626118599e-10
loss_decrease = 0.0
epoch = 5
loss = 1.5801587626118599e-10
loss_decrease = 0.0
epoch = 6
loss = 1.5801587626118599e-10
loss_decrease = 0.0
epoch = 7
loss = 1.5801587626118599e-10
loss_decrease = 0.0
* Final training loss: 1.5802e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
Gaussian_quad
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 0.010667574981019499
loss_decrease = 0.9893324250189806
epoch = 2
loss = 3.369287590824238e-11
loss_decrease = 0.9999999968415618
epoch = 3
loss = 3.369287590824238e-11
loss_decrease = 0.0
epoch = 4
loss = 3.369287590824238e-11
loss_decrease = 0.0
epoch = 5
loss = 3.369287590824238e-11
loss_decrease = 0.0
epoch = 6
loss = 3.369287590824238e-11
loss_decrease = 0.0
epoch = 7
loss = 3.369287590824238e-11
loss_decrease = 0.0
* Final training loss: 3.3693e-11
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
Gaussian_quad
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 10
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 0.011767560866835624
loss_decrease = 0.9882324391331644
epoch = 2
loss = 1.9001152721864545e-10
loss_decrease = 0.9999999838529386
epoch = 3
loss = 1.9001152721864545e-10
loss_decrease = 0.0
epoch = 4
loss = 1.9001152721864545e-10
loss_decrease = 0.0
epoch = 5
loss = 1.9001152721864545e-10
loss_decrease = 0.0
epoch = 6
loss = 1.9001152721864545e-10
loss_decrease = 0.0
epoch = 7
loss = 1.9001152721864545e-10
loss_decrease = 0.0
* Final training loss: 1.9001e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
Gaussian_quad
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 10.821250730439658
loss_decrease = -9.821250730439658
epoch = 2
loss = 4.255491831492432
loss_decrease = 0.6067467673101836
epoch = 3
loss = 3.246720740290397e-11
loss_decrease = 0.9999999999923704
epoch = 4
loss = 3.246720740290397e-11
loss_decrease = 0.0
epoch = 5
loss = 3.246720740290397e-11
loss_decrease = 0.0
epoch = 6
loss = 3.246720740290397e-11
loss_decrease = 0.0
epoch = 7
loss = 3.246720740290397e-11
loss_decrease = 0.0
epoch = 8
loss = 3.246720740290397e-11
loss_decrease = 0.0
* Final training loss: 3.2467e-11
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
Gaussian_quad
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 10.82164257853568
loss_decrease = -9.82164257853568
epoch = 2
loss = 4.253599727878463
loss_decrease = 0.6069358512805332
epoch = 3
loss = 5.500412093824087e-13
loss_decrease = 0.9999999999998708
epoch = 4
loss = 5.500412093824087e-13
loss_decrease = 0.0
epoch = 5
loss = 5.500412093824087e-13
loss_decrease = 0.0
epoch = 6
loss = 5.500412093824087e-13
loss_decrease = 0.0
epoch = 7
loss = 5.500412093824087e-13
loss_decrease = 0.0
epoch = 8
loss = 5.500412093824087e-13
loss_decrease = 0.0
* Final training loss: 5.5004e-13
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
Gaussian_quad
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 21
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 10.821639033199414
loss_decrease = -9.821639033199414
epoch = 2
loss = 4.253621177619392
loss_decrease = 0.6069337403909129
epoch = 3
loss = 5.459349120035627e-13
loss_decrease = 0.9999999999998715
epoch = 4
loss = 5.459349120035627e-13
loss_decrease = 0.0
epoch = 5
loss = 5.459349120035627e-13
loss_decrease = 0.0
epoch = 6
loss = 5.459349120035627e-13
loss_decrease = 0.0
epoch = 7
loss = 5.459349120035627e-13
loss_decrease = 0.0
epoch = 8
loss = 5.459349120035627e-13
loss_decrease = 0.0
* Final training loss: 5.4593e-13
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
Gaussian_quad
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 149.762236322372
loss_decrease = -148.762236322372
epoch = 2
loss = 34.16528198681369
loss_decrease = 0.771869846325806
epoch = 3
loss = 5.514502262402074
loss_decrease = 0.8385933924230324
epoch = 4
loss = 5.1004642599682555
loss_decrease = 0.07508166335459376
epoch = 5
loss = 2.984730523256778e-06
loss_decrease = 0.9999994148119914
epoch = 6
loss = 3.324506945634779e-10
loss_decrease = 0.9998886161775835
epoch = 7
loss = 3.324506945634779e-10
loss_decrease = 0.0
epoch = 8
loss = 3.324506945634779e-10
loss_decrease = 0.0
epoch = 9
loss = 3.324506945634779e-10
loss_decrease = 0.0
epoch = 10
loss = 3.324506945634779e-10
loss_decrease = 0.0
epoch = 11
loss = 3.324506945634779e-10
loss_decrease = 0.0
* Final training loss: 3.3245e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
Gaussian_quad
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 149.76224951927202
loss_decrease = -148.76224951927202
epoch = 2
loss = 34.16523747435376
loss_decrease = 0.7718701636492363
epoch = 3
loss = 5.516083849101045
loss_decrease = 0.8385468898542939
epoch = 4
loss = 5.247155164024966
loss_decrease = 0.04875355278000454
epoch = 5
loss = 0.004001719048314324
loss_decrease = 0.9992373545429436
epoch = 6
loss = 3.661646526063731e-10
loss_decrease = 0.9999999084981609
epoch = 7
loss = 3.661646526063731e-10
loss_decrease = 0.0
epoch = 8
loss = 3.661646526063731e-10
loss_decrease = 0.0
epoch = 9
loss = 3.661646526063731e-10
loss_decrease = 0.0
epoch = 10
loss = 3.661646526063731e-10
loss_decrease = 0.0
epoch = 11
loss = 3.661646526063731e-10
loss_decrease = 0.0
* Final training loss: 3.6616e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
Gaussian_quad
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 41
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 149.7622495705457
loss_decrease = -148.7622495705457
epoch = 2
loss = 34.16523621331812
loss_decrease = 0.7718701721475909
epoch = 3
loss = 5.516162236320666
loss_decrease = 0.8385445895389306
epoch = 4
loss = 5.249440084579332
loss_decrease = 0.04835284756222836
epoch = 5
loss = 6.853403521287848e-05
loss_decrease = 0.9999869445056789
epoch = 6
loss = 1.8140067681170891e-10
loss_decrease = 0.9999973531300725
epoch = 7
loss = 1.8140067681170891e-10
loss_decrease = 0.0
epoch = 8
loss = 1.8140067681170891e-10
loss_decrease = 0.0
epoch = 9
loss = 1.8140067681170891e-10
loss_decrease = 0.0
epoch = 10
loss = 1.8140067681170891e-10
loss_decrease = 0.0
epoch = 11
loss = 1.8140067681170891e-10
loss_decrease = 0.0
* Final training loss: 1.8140e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
Gaussian_quad
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 582.6441960637158
loss_decrease = -581.6441960637158
epoch = 2
loss = 234.50100818234264
loss_decrease = 0.5975227938995921
epoch = 3
loss = 120.8013347943788
loss_decrease = 0.48485792990516086
epoch = 4
loss = 60.14169301119734
loss_decrease = 0.502143804010385
epoch = 5
loss = 39.9968081320348
loss_decrease = 0.334957063403784
epoch = 6
loss = 18.444388478918246
loss_decrease = 0.5388534900577352
epoch = 7
loss = 17.57773746165426
loss_decrease = 0.04698724591788773
epoch = 8
loss = 16.217793007368137
loss_decrease = 0.07736743464583162
epoch = 9
loss = 7.133281737284696
loss_decrease = 0.5601570611954492
epoch = 10
loss = 2.9275112570750474
loss_decrease = 0.589598257170561
epoch = 11
loss = 2.8280469425823425
loss_decrease = 0.033975724005270734
epoch = 12
loss = 2.7371156842494315
loss_decrease = 0.03215337658075785
epoch = 13
loss = 2.732685981733321
loss_decrease = 0.0016183833740024552
epoch = 14
loss = 2.709912114960542
loss_decrease = 0.00833387623935244
epoch = 15
loss = 2.6865757411803517
loss_decrease = 0.008611487306676057
epoch = 16
loss = 2.6539604571687003
loss_decrease = 0.012140094735360703
epoch = 17
loss = 1.3187998885937056
loss_decrease = 0.5030823141952053
epoch = 18
loss = 1.2010467861999823
loss_decrease = 0.0892880742652235
epoch = 19
loss = 1.172709059037471
loss_decrease = 0.023594190907557995
epoch = 20
loss = 0.0001901745599626254
loss_decrease = 0.9998378331279212
epoch = 21
loss = 2.8790346002416244e-09
loss_decrease = 0.9999848610949813
epoch = 22
loss = 1.0386660786815357e-09
loss_decrease = 0.6392311233097493
epoch = 23
loss = 1.0386660786815357e-09
loss_decrease = 0.0
epoch = 24
loss = 1.0386660786815357e-09
loss_decrease = 0.0
epoch = 25
loss = 1.0386660786815357e-09
loss_decrease = 0.0
epoch = 26
loss = 1.0386660786815357e-09
loss_decrease = 0.0
epoch = 27
loss = 1.0386660786815357e-09
loss_decrease = 0.0
* Final training loss: 1.0387e-09
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
Gaussian_quad
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 582.644195119539
loss_decrease = -581.644195119539
epoch = 2
loss = 234.5010108447511
loss_decrease = 0.5975227886778492
epoch = 3
loss = 120.80133998394517
loss_decrease = 0.4848579136235775
epoch = 4
loss = 60.13313388439249
loss_decrease = 0.5022146783108171
epoch = 5
loss = 40.44313753218388
loss_decrease = 0.32744004977460744
epoch = 6
loss = 18.58429656642732
loss_decrease = 0.540483313105016
epoch = 7
loss = 17.594166296616184
loss_decrease = 0.05327779107872257
epoch = 8
loss = 16.399565186858986
loss_decrease = 0.06789756841089711
epoch = 9
loss = 7.360301231291259
loss_decrease = 0.5511892451155298
epoch = 10
loss = 3.2482894786658454
loss_decrease = 0.5586743834809081
epoch = 11
loss = 2.8363938951754823
loss_decrease = 0.12680384128188568
epoch = 12
loss = 2.7783192377816612
loss_decrease = 0.02047482103688146
epoch = 13
loss = 2.7325749774439467
loss_decrease = 0.016464724325286263
epoch = 14
loss = 2.723620532442539
loss_decrease = 0.003276925638023608
epoch = 15
loss = 2.686520974752709
loss_decrease = 0.013621412104923089
epoch = 16
loss = 2.6823464802078436
loss_decrease = 0.001553866351350434
epoch = 17
loss = 2.0652790336923847
loss_decrease = 0.23004762847327798
epoch = 18
loss = 1.201904723065617
loss_decrease = 0.4180424516696875
epoch = 19
loss = 1.1986825429216719
loss_decrease = 0.0026808948181238157
epoch = 20
loss = 0.796905139682086
loss_decrease = 0.3351824931564388
epoch = 21
loss = 0.016331925759325894
loss_decrease = 0.979505809479606
epoch = 22
loss = 2.66006266314031e-06
loss_decrease = 0.9998371249843809
epoch = 23
loss = 8.445574608017376e-10
loss_decrease = 0.9996825046746062
epoch = 24
loss = 4.962692727626658e-10
loss_decrease = 0.41239134600556615
epoch = 25
loss = 4.962692727626658e-10
loss_decrease = 0.0
epoch = 26
loss = 4.962692727626658e-10
loss_decrease = 0.0
epoch = 27
loss = 4.962692727626658e-10
loss_decrease = 0.0
epoch = 28
loss = 4.962692727626658e-10
loss_decrease = 0.0
epoch = 29
loss = 4.962692727626658e-10
loss_decrease = 0.0
* Final training loss: 4.9627e-10
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
Gaussian_quad
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
mesh.NNodes = 80
border_nodes : [[1.0], [2.0]]
self.order = 1
mesh.ListOfDirichletsBCsValues = [0, 0.005]
IDs = tensor([[1]], dtype=torch.int32)
IDs = tensor([0], dtype=torch.int32)
IDs = tensor([[2]], dtype=torch.int32)
IDs = tensor([1], dtype=torch.int32)
frozen : tensor([0], dtype=torch.int32)
frozen : tensor([1], dtype=torch.int32)
epoch = 1
loss = 582.6441951201659
loss_decrease = -581.6441951201659
epoch = 2
loss = 234.50101084098952
loss_decrease = 0.5975227886847384
epoch = 3
loss = 120.8013399785262
loss_decrease = 0.4848579136384227
epoch = 4
loss = 60.133144032814805
loss_decrease = 0.5022145942793006
epoch = 5
loss = 40.450548688985506
loss_decrease = 0.3273169174904352
epoch = 6
loss = 18.584005227206077
loss_decrease = 0.5405747059182311
epoch = 7
loss = 17.625339118193175
loss_decrease = 0.0515855488250435
epoch = 8
loss = 16.856791144336952
loss_decrease = 0.043604719812903564
epoch = 9
loss = 8.300421559238083
loss_decrease = 0.5075918371316706
epoch = 10
loss = 4.75418274168686
loss_decrease = 0.42723598943048646
epoch = 11
loss = 2.836750905234714
loss_decrease = 0.40331471056827956
epoch = 12
loss = 2.7733825674201333
loss_decrease = 0.02233835113884901
epoch = 13
loss = 2.734983789160681
loss_decrease = 0.013845467520613945
epoch = 14
loss = 2.7303168431453297
loss_decrease = 0.0017063889131070243
epoch = 15
loss = 2.6859441681377954
loss_decrease = 0.016251840924226577
epoch = 16
loss = 2.68259130083311
loss_decrease = 0.0012483011912380955
epoch = 17
loss = 2.260747975597613
loss_decrease = 0.15725217818476053
epoch = 18
loss = 1.2004861504162856
loss_decrease = 0.4689871832799296
epoch = 19
loss = 1.1968133326349613
loss_decrease = 0.003059442026924452
epoch = 20
loss = 0.04709855776887128
loss_decrease = 0.9606466969538376
epoch = 21
loss = 1.117444466319359e-06
loss_decrease = 0.9999762743379149
epoch = 22
loss = 7.707277609845787e-10
loss_decrease = 0.9993102764529112
epoch = 23
loss = 7.707277609845787e-10
loss_decrease = 0.0
epoch = 24
loss = 7.707277609845787e-10
loss_decrease = 0.0
epoch = 25
loss = 7.707277609845787e-10
loss_decrease = 0.0
epoch = 26
loss = 7.707277609845787e-10
loss_decrease = 0.0
epoch = 27
loss = 7.707277609845787e-10
loss_decrease = 0.0
* Final training loss: 7.7073e-10
# Load default configuration file for resudal loss formulation = two independent models (defines dimension, domain, boundary conditions, number of training iterations etc.)
Default_config_file = 'Configurations/config_1D_Mixed.toml'
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-cf',type=str, help = 'path to the desired configuration file', default=Default_config_file, action = 'store')
args, unknown = parser.parse_known_args()
inputs = vars(args)
print(f"* Executing job in {args.cf}")
with open(args.cf, mode="rb") as f:
config = tomllib.load(f)
* Executing job in Configurations/config_1D_Mixed.toml
# Experiment setting: Resdiual loss function
# Tested variants: 5 mesh resolutions, 4 training sets, fixed mesh
mesh_resolution_r = [10,20,40,80,160] # cumulative number of mesh nodes and element mid-points
training_points = [10,25,50,75]
loss_u_r = numpy.zeros((len(mesh_resolution_r),len(training_points)))
loss_grad_r = numpy.zeros((len(mesh_resolution_r),len(training_points)))
config["solver"]["TrainingStrategy"] = "Mixed"
config["solver"]["IntegralMethod"] = "None"
config["solver"]["FrozenMesh"] = True
for res in range(len(mesh_resolution_r)):
config["interpolation"]["np"] = mesh_resolution_r[res]+mesh_resolution_r[res]-1
for q in range(len(training_points)):
config["training"]["Points_per_element"] = training_points[q]
#%% Initialise material
Mat = pre.Material( flag_lame = False, # If True should input lmbda and mu instead of E and nu
coef1 = config["material"]["E"], # Young Modulus
coef2 = config["material"]["nu"] # Poisson's ratio
)
#%% Create mesh object
# Definition of the (initial) element size of the mesh
MaxElemSize = pre.ElementSize(
dimension = config["interpolation"]["dimension"],
L = config["geometry"]["L"],
order = config["interpolation"]["order_u"],
np = config["interpolation"]["np"],
MaxElemSize2D = config["interpolation"]["MaxElemSize2D"]
)
Excluded = []
Mesh_object_u = pre.Mesh(
config["geometry"]["Name"], # Create the mesh object
MaxElemSize,
config["interpolation"]["order_u"],
config["interpolation"]["dimension"]
)
Mesh_object_u.AddBorders(config["Borders_u"]["Borders"])
Mesh_object_u.AddBCs( # Include Boundary physical domains infos (BCs+volume)
config["geometry"]["Volume_element"],
Excluded,
config["DirichletDictionryList_u"]
)
Mesh_object_u.MeshGeo() # Mesh the .geo file if .msh does not exist
Mesh_object_u.ReadMesh()
Mesh_object_u.AssemblyMatrix() # Build the assembly weight matrix
Mesh_object_du = pre.Mesh(
config["geometry"]["Name"], # Create the mesh object
MaxElemSize,
config["interpolation"]["order_du"],
config["interpolation"]["dimension"]
)
Mesh_object_du.AddBorders(config["Borders_du"]["Borders"])
Mesh_object_du.AddBCs( # Include Boundary physical domains infos (BCs+volume)
config["geometry"]["Volume_element"],
Excluded,
config["DirichletDictionryList_du"]
)
Mesh_object_du.MeshGeo() # Mesh the .geo file if .msh does not exist
Mesh_object_du.ReadMesh()
Mesh_object_du.AssemblyMatrix() # Build the assembly weight matrix
if int(Mesh_object_u.dim) != int(Mesh_object_u.dimension):
raise ValueError("The dimension of the provided geometry does not match the job dimension")
#%% Application of the Space HiDeNN
match config["interpolation"]["dimension"]:
case 1:
Model_FEM_u = MeshNN(Mesh_object_u)
Model_FEM_du = MeshNN(Mesh_object_du)
# Set the coordinates as untrainable
Model_FEM_u.Freeze_Mesh()
Model_FEM_du.Freeze_Mesh()
# Make nodal values trainable (except the BC). Default choice
Model_FEM_u.UnFreeze_FEM()
Model_FEM_du.UnFreeze_FEM()
if not config["solver"]["FrozenMesh"]:
Model_FEM_u.UnFreeze_Mesh()
Model_FEM_du.UnFreeze_Mesh()
Model_FEM_u, Model_FEM_du = Training_1D_Mixed_LBFGS(Model_FEM_u, Model_FEM_du, config, Mat)
loss_u_r[res,q], loss_grad_r[res,q] = Pplot.Normalized_error_1D(Model_FEM_u,config,Mat,Model_FEM_du)
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 19
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
epoch = 1
loss = 0.0026235383760869328
loss_decrease = 0.997376461623913
epoch = 2
loss = 0.0024022575433551643
loss_decrease = 0.08434442383183807
epoch = 3
loss = 0.0024022575433551643
loss_decrease = 0.0
epoch = 4
loss = 0.0024022575433551643
loss_decrease = 0.0
epoch = 5
loss = 0.0024022575433551643
loss_decrease = 0.0
epoch = 6
loss = 0.0024022575433551643
loss_decrease = 0.0
epoch = 7
loss = 0.0024022575433551643
loss_decrease = 0.0
* Final training loss: 2.4023e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 19
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
epoch = 1
loss = 0.0026938679150323693
loss_decrease = 0.9973061320849677
epoch = 2
loss = 0.002482114892741595
loss_decrease = 0.07860556974940983
epoch = 3
loss = 0.002482114892741595
loss_decrease = 0.0
epoch = 4
loss = 0.002482114892741595
loss_decrease = 0.0
epoch = 5
loss = 0.002482114892741595
loss_decrease = 0.0
epoch = 6
loss = 0.002482114892741595
loss_decrease = 0.0
epoch = 7
loss = 0.002482114892741595
loss_decrease = 0.0
* Final training loss: 2.4821e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 19
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
epoch = 1
loss = 0.0027241520365258497
loss_decrease = 0.9972758479634741
epoch = 2
loss = 0.0025084226760542735
loss_decrease = 0.07919138050264586
epoch = 3
loss = 0.0025084226760542735
loss_decrease = 0.0
epoch = 4
loss = 0.0025084226760542735
loss_decrease = 0.0
epoch = 5
loss = 0.0025084226760542735
loss_decrease = 0.0
epoch = 6
loss = 0.0025084226760542735
loss_decrease = 0.0
epoch = 7
loss = 0.0025084226760542735
loss_decrease = 0.0
* Final training loss: 2.5084e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 19
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 10
epoch = 1
loss = 0.002725126256691632
loss_decrease = 0.9972748737433084
epoch = 2
loss = 0.0025171587995780386
loss_decrease = 0.07631479701277064
epoch = 3
loss = 0.0025171587995780386
loss_decrease = 0.0
epoch = 4
loss = 0.0025171587995780386
loss_decrease = 0.0
epoch = 5
loss = 0.0025171587995780386
loss_decrease = 0.0
epoch = 6
loss = 0.0025171587995780386
loss_decrease = 0.0
epoch = 7
loss = 0.0025171587995780386
loss_decrease = 0.0
* Final training loss: 2.5172e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 41
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
epoch = 1
loss = 0.0017617958818586328
loss_decrease = 0.9982382041181413
epoch = 2
loss = 0.0014189393627734074
loss_decrease = 0.19460626660310038
epoch = 3
loss = 0.0011566600334328289
loss_decrease = 0.18484181651563802
epoch = 4
loss = 0.001155870635941546
loss_decrease = 0.0006824801311238024
epoch = 5
loss = 0.001155870635941546
loss_decrease = 0.0
epoch = 6
loss = 0.001155870635941546
loss_decrease = 0.0
epoch = 7
loss = 0.001155870635941546
loss_decrease = 0.0
epoch = 8
loss = 0.001155870635941546
loss_decrease = 0.0
epoch = 9
loss = 0.001155870635941546
loss_decrease = 0.0
* Final training loss: 1.1559e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 41
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
epoch = 1
loss = 0.001786464186653039
loss_decrease = 0.9982135358133469
epoch = 2
loss = 0.0014242958019414905
loss_decrease = 0.20272916043734132
epoch = 3
loss = 0.0011572354185754117
loss_decrease = 0.1875034546911131
epoch = 4
loss = 0.0011559904286063513
loss_decrease = 0.0010758312000102579
epoch = 5
loss = 0.001155989519761756
loss_decrease = 7.862042563629879e-07
epoch = 6
loss = 0.0011559886037113855
loss_decrease = 7.924383005911475e-07
epoch = 7
loss = 0.0011559880339260277
loss_decrease = 4.92898767302106e-07
epoch = 8
loss = 0.0011559880339260277
loss_decrease = 0.0
epoch = 9
loss = 0.0011559880339260277
loss_decrease = 0.0
epoch = 10
loss = 0.0011559880339260277
loss_decrease = 0.0
epoch = 11
loss = 0.0011559880339260277
loss_decrease = 0.0
epoch = 12
loss = 0.0011559880339260277
loss_decrease = 0.0
* Final training loss: 1.156e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 41
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
epoch = 1
loss = 0.0017747831554666821
loss_decrease = 0.9982252168445334
epoch = 2
loss = 0.001425490886174954
loss_decrease = 0.1968084203503054
epoch = 3
loss = 0.001156213052280024
loss_decrease = 0.18890182778894374
epoch = 4
loss = 0.0011547623828304999
loss_decrease = 0.0012546731302361662
epoch = 5
loss = 0.0011547623828304999
loss_decrease = 0.0
epoch = 6
loss = 0.0011547623828304999
loss_decrease = 0.0
epoch = 7
loss = 0.0011547623828304999
loss_decrease = 0.0
epoch = 8
loss = 0.0011547623828304999
loss_decrease = 0.0
epoch = 9
loss = 0.0011547623828304999
loss_decrease = 0.0
* Final training loss: 1.1548e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 41
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 21
epoch = 1
loss = 0.0017682163198734213
loss_decrease = 0.9982317836801265
epoch = 2
loss = 0.0014224047290233737
loss_decrease = 0.1955708625485386
epoch = 3
loss = 0.0011556269693375112
loss_decrease = 0.1875540443886409
epoch = 4
loss = 0.0011542138039898938
loss_decrease = 0.001222855977848523
epoch = 5
loss = 0.0011542138039898938
loss_decrease = 0.0
epoch = 6
loss = 0.0011542138039898938
loss_decrease = 0.0
epoch = 7
loss = 0.0011542138039898938
loss_decrease = 0.0
epoch = 8
loss = 0.0011542138039898938
loss_decrease = 0.0
epoch = 9
loss = 0.0011542138039898938
loss_decrease = 0.0
* Final training loss: 1.1542e-03
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 81
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
epoch = 1
loss = 0.004469650135204953
loss_decrease = 0.995530349864795
epoch = 2
loss = 0.0008495686160663134
loss_decrease = 0.8099250298418811
epoch = 3
loss = 0.0006362277558545661
loss_decrease = 0.25111669166825124
epoch = 4
loss = 0.0005325304562894442
loss_decrease = 0.1629877015123902
epoch = 5
loss = 0.00039547237998710776
loss_decrease = 0.25737133845325416
epoch = 6
loss = 0.0002676678033663578
loss_decrease = 0.323169412298569
epoch = 7
loss = 0.0002664296708633192
loss_decrease = 0.004625631052622114
epoch = 8
loss = 0.0002654893192008701
loss_decrease = 0.0035294554821993394
epoch = 9
loss = 0.0002653585374959316
loss_decrease = 0.0004926062763359427
epoch = 10
loss = 0.0002653464828841008
loss_decrease = 4.5427638939268055e-05
epoch = 11
loss = 0.0002653464828841008
loss_decrease = 0.0
epoch = 12
loss = 0.0002653464828841008
loss_decrease = 0.0
epoch = 13
loss = 0.0002653464828841008
loss_decrease = 0.0
epoch = 14
loss = 0.0002653464828841008
loss_decrease = 0.0
epoch = 15
loss = 0.0002653464828841008
loss_decrease = 0.0
* Final training loss: 2.6535e-04
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 81
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
epoch = 1
loss = 0.005026901675567628
loss_decrease = 0.9949730983244324
epoch = 2
loss = 0.0008991918044944606
loss_decrease = 0.8211240516469968
epoch = 3
loss = 0.0006516074273865123
loss_decrease = 0.27534100719161253
epoch = 4
loss = 0.0005439895660547629
loss_decrease = 0.1651575117297028
epoch = 5
loss = 0.00046818658788087955
loss_decrease = 0.1393463825485438
epoch = 6
loss = 0.0003022174366485746
loss_decrease = 0.35449360474745684
epoch = 7
loss = 0.0002688516412529506
loss_decrease = 0.11040327707637364
epoch = 8
loss = 0.0002673620513548542
loss_decrease = 0.0055405646443307
epoch = 9
loss = 0.00026710696623049506
loss_decrease = 0.0009540812657089137
epoch = 10
loss = 0.0002670867258395303
loss_decrease = 7.57763500159237e-05
epoch = 11
loss = 0.000267085865838538
loss_decrease = 3.2199316143161165e-06
epoch = 12
loss = 0.00026708508330212515
loss_decrease = 2.9299057454132814e-06
epoch = 13
loss = 0.00026708446980660655
loss_decrease = 2.2970040521019947e-06
epoch = 14
loss = 0.00026708446980660655
loss_decrease = 0.0
epoch = 15
loss = 0.00026708446980660655
loss_decrease = 0.0
epoch = 16
loss = 0.00026708446980660655
loss_decrease = 0.0
epoch = 17
loss = 0.00026708446980660655
loss_decrease = 0.0
epoch = 18
loss = 0.00026708446980660655
loss_decrease = 0.0
* Final training loss: 2.6708e-04
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 81
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
epoch = 1
loss = 0.005122085054423114
loss_decrease = 0.9948779149455769
epoch = 2
loss = 0.0008926011954443027
loss_decrease = 0.8257347962870105
epoch = 3
loss = 0.0006406244894715531
loss_decrease = 0.28229483363768654
epoch = 4
loss = 0.0005401458420739357
loss_decrease = 0.1568448428821409
epoch = 5
loss = 0.000464841184595769
loss_decrease = 0.1394154163790802
epoch = 6
loss = 0.00029536552018577934
loss_decrease = 0.3645883153777942
epoch = 7
loss = 0.0002691012477014115
loss_decrease = 0.08892125413910226
epoch = 8
loss = 0.00026747014290808956
loss_decrease = 0.0060613052048416735
epoch = 9
loss = 0.0002672856068874576
loss_decrease = 0.000689931289622095
epoch = 10
loss = 0.00026726021261210914
loss_decrease = 9.500801649650103e-05
epoch = 11
loss = 0.00026726021261210914
loss_decrease = 0.0
epoch = 12
loss = 0.00026726021261210914
loss_decrease = 0.0
epoch = 13
loss = 0.00026726021261210914
loss_decrease = 0.0
epoch = 14
loss = 0.00026726021261210914
loss_decrease = 0.0
epoch = 15
loss = 0.00026726021261210914
loss_decrease = 0.0
* Final training loss: 2.6726e-04
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 81
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 41
epoch = 1
loss = 0.005132443185188354
loss_decrease = 0.9948675568148116
epoch = 2
loss = 0.0008882133068142217
loss_decrease = 0.8269414244316423
epoch = 3
loss = 0.0006382542902109383
loss_decrease = 0.28141777958699815
epoch = 4
loss = 0.0005373120600084561
loss_decrease = 0.15815362583637557
epoch = 5
loss = 0.00042641644253169433
loss_decrease = 0.20638959318169128
epoch = 6
loss = 0.0002744977676015351
loss_decrease = 0.3562683324972103
epoch = 7
loss = 0.00026878313980382924
loss_decrease = 0.02081848551133309
epoch = 8
loss = 0.0002674865018527451
loss_decrease = 0.004824104488214828
epoch = 9
loss = 0.00026728808406157554
loss_decrease = 0.0007417861828362921
epoch = 10
loss = 0.0002672764697768095
loss_decrease = 4.3452310292092425e-05
epoch = 11
loss = 0.0002672753490163785
loss_decrease = 4.193262624119963e-06
epoch = 12
loss = 0.0002672753490163785
loss_decrease = 0.0
epoch = 13
loss = 0.0002672753490163785
loss_decrease = 0.0
epoch = 14
loss = 0.0002672753490163785
loss_decrease = 0.0
epoch = 15
loss = 0.0002672753490163785
loss_decrease = 0.0
epoch = 16
loss = 0.0002672753490163785
loss_decrease = 0.0
* Final training loss: 2.6728e-04
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 159
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
epoch = 1
loss = 0.010907320031309963
loss_decrease = 0.98909267996869
epoch = 2
loss = 0.004318638326752108
loss_decrease = 0.6040605470128998
epoch = 3
loss = 0.0012263529196381252
loss_decrease = 0.71603250217982
epoch = 4
loss = 0.000663210607576482
loss_decrease = 0.45920085730934324
epoch = 5
loss = 0.0005004050171648738
loss_decrease = 0.24548098078005082
epoch = 6
loss = 0.00044310274032716363
loss_decrease = 0.11451179519015527
epoch = 7
loss = 0.00039281647076730474
loss_decrease = 0.11348670406039504
epoch = 8
loss = 0.00035106592406990064
loss_decrease = 0.10628512245388036
epoch = 9
loss = 0.0003375924791879112
loss_decrease = 0.03837867465401383
epoch = 10
loss = 0.00031501065912474167
loss_decrease = 0.066890767583125
epoch = 11
loss = 0.0002822190939292818
loss_decrease = 0.10409668449496717
epoch = 12
loss = 0.00019821447798653511
loss_decrease = 0.2976574503630023
epoch = 13
loss = 0.00011883037757176719
loss_decrease = 0.40049597396291386
epoch = 14
loss = 8.287046396855112e-05
loss_decrease = 0.30261549561683593
epoch = 15
loss = 7.255959470727538e-05
loss_decrease = 0.12442152206591553
epoch = 16
loss = 7.186045511833438e-05
loss_decrease = 0.009635384427952053
epoch = 17
loss = 7.150487260722748e-05
loss_decrease = 0.004948236279903254
epoch = 18
loss = 7.113578275921286e-05
loss_decrease = 0.0051617440120760505
epoch = 19
loss = 7.078720866164432e-05
loss_decrease = 0.00490012317357122
epoch = 20
loss = 7.034598909736389e-05
loss_decrease = 0.00623304086462027
epoch = 21
loss = 7.026817273126779e-05
loss_decrease = 0.0011061947823121996
epoch = 22
loss = 7.026564615710465e-05
loss_decrease = 3.595616713708791e-05
epoch = 23
loss = 7.026386209267286e-05
loss_decrease = 2.5390280021074734e-05
epoch = 24
loss = 7.026386209267286e-05
loss_decrease = 0.0
epoch = 25
loss = 7.026386209267286e-05
loss_decrease = 0.0
epoch = 26
loss = 7.026386209267286e-05
loss_decrease = 0.0
epoch = 27
loss = 7.026386209267286e-05
loss_decrease = 0.0
epoch = 28
loss = 7.026386209267286e-05
loss_decrease = 0.0
* Final training loss: 7.0264e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 159
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
epoch = 1
loss = 0.01130502087090017
loss_decrease = 0.9886949791290999
epoch = 2
loss = 0.004807697748625082
loss_decrease = 0.5747289807309958
epoch = 3
loss = 0.0014281328300783437
loss_decrease = 0.702948707520816
epoch = 4
loss = 0.0007062009735913841
loss_decrease = 0.5055074999202674
epoch = 5
loss = 0.0005141723300817559
loss_decrease = 0.2719178402333075
epoch = 6
loss = 0.00045169896917297657
loss_decrease = 0.12150276717311054
epoch = 7
loss = 0.0004012190209390516
loss_decrease = 0.11175573042893934
epoch = 8
loss = 0.0003580492486579502
loss_decrease = 0.10759652466142497
epoch = 9
loss = 0.0003408679988455812
loss_decrease = 0.047985716704526574
epoch = 10
loss = 0.00032047417430846757
loss_decrease = 0.059829096911946704
epoch = 11
loss = 0.00029071623448184995
loss_decrease = 0.09285596847493416
epoch = 12
loss = 0.00020762900108894884
loss_decrease = 0.2858018353910966
epoch = 13
loss = 0.0001306443463591716
loss_decrease = 0.3707798733607393
epoch = 14
loss = 9.112299545047803e-05
loss_decrease = 0.3025109927071793
epoch = 15
loss = 7.377275772569843e-05
loss_decrease = 0.19040460247170882
epoch = 16
loss = 7.29780022407659e-05
loss_decrease = 0.010773021226718723
epoch = 17
loss = 7.248935700112479e-05
loss_decrease = 0.006695788109257786
epoch = 18
loss = 7.207960123187026e-05
loss_decrease = 0.005652633520368642
epoch = 19
loss = 7.133283498386653e-05
loss_decrease = 0.010360299380701226
epoch = 20
loss = 7.094900350537179e-05
loss_decrease = 0.005380852710838574
epoch = 21
loss = 7.079792976882178e-05
loss_decrease = 0.0021293285188786156
epoch = 22
loss = 7.07958460479661e-05
loss_decrease = 2.9431946138572084e-05
epoch = 23
loss = 7.079532169282226e-05
loss_decrease = 7.406580655737566e-06
epoch = 24
loss = 7.079532169282226e-05
loss_decrease = 0.0
epoch = 25
loss = 7.079532169282226e-05
loss_decrease = 0.0
epoch = 26
loss = 7.079532169282226e-05
loss_decrease = 0.0
epoch = 27
loss = 7.079532169282226e-05
loss_decrease = 0.0
epoch = 28
loss = 7.079532169282226e-05
loss_decrease = 0.0
* Final training loss: 7.0795e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 159
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
epoch = 1
loss = 0.01135122874676024
loss_decrease = 0.9886487712532398
epoch = 2
loss = 0.004890875700158538
loss_decrease = 0.5691324869517368
epoch = 3
loss = 0.0014051955985729175
loss_decrease = 0.7126903882412371
epoch = 4
loss = 0.0007061721609355706
loss_decrease = 0.4974563244770039
epoch = 5
loss = 0.0005199876766110994
loss_decrease = 0.2636531070239375
epoch = 6
loss = 0.00045807784789423875
loss_decrease = 0.11906018450349391
epoch = 7
loss = 0.0004073075163774036
loss_decrease = 0.11083341346940014
epoch = 8
loss = 0.0003603441413144267
loss_decrease = 0.11530200935320208
epoch = 9
loss = 0.0003411623856883373
loss_decrease = 0.05323176770994575
epoch = 10
loss = 0.0003207491078143458
loss_decrease = 0.05983449152169923
epoch = 11
loss = 0.00029327912803969936
loss_decrease = 0.08564319932745203
epoch = 12
loss = 0.000206705173789493
loss_decrease = 0.29519302934673
epoch = 13
loss = 0.0001327401807774321
loss_decrease = 0.3578284551667115
epoch = 14
loss = 9.040187829911762e-05
loss_decrease = 0.31895619118753415
epoch = 15
loss = 7.36763868672615e-05
loss_decrease = 0.18501265401273606
epoch = 16
loss = 7.29971861202707e-05
loss_decrease = 0.009218703249040554
epoch = 17
loss = 7.253172226806026e-05
loss_decrease = 0.0063764629426063205
epoch = 18
loss = 7.15422684904976e-05
loss_decrease = 0.013641669418876737
epoch = 19
loss = 7.113969857468052e-05
loss_decrease = 0.005627021959340744
epoch = 20
loss = 7.095402457298831e-05
loss_decrease = 0.002609991403004
epoch = 21
loss = 7.087804438730799e-05
loss_decrease = 0.0010708368713061374
epoch = 22
loss = 7.08587705768142e-05
loss_decrease = 0.00027192920826760685
epoch = 23
loss = 7.08587705768142e-05
loss_decrease = 0.0
epoch = 24
loss = 7.08587705768142e-05
loss_decrease = 0.0
epoch = 25
loss = 7.08587705768142e-05
loss_decrease = 0.0
epoch = 26
loss = 7.08587705768142e-05
loss_decrease = 0.0
epoch = 27
loss = 7.08587705768142e-05
loss_decrease = 0.0
* Final training loss: 7.0859e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 159
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 80
epoch = 1
loss = 0.011341313960972151
loss_decrease = 0.9886586860390278
epoch = 2
loss = 0.004900504652073898
loss_decrease = 0.5679067990765826
epoch = 3
loss = 0.0014598901966261586
loss_decrease = 0.702093906592185
epoch = 4
loss = 0.0007289055608222276
loss_decrease = 0.5007120655329107
epoch = 5
loss = 0.000527026966831251
loss_decrease = 0.2769612482627398
epoch = 6
loss = 0.0004592393665390855
loss_decrease = 0.1286226408863637
epoch = 7
loss = 0.0004091431435266328
loss_decrease = 0.10908521059504826
epoch = 8
loss = 0.00036212072542051875
loss_decrease = 0.11492901408734757
epoch = 9
loss = 0.00034241307339502385
loss_decrease = 0.05442287790241515
epoch = 10
loss = 0.00032349120806922366
loss_decrease = 0.05526034721218439
epoch = 11
loss = 0.00029979820575736437
loss_decrease = 0.0732415649045684
epoch = 12
loss = 0.000234294578403622
loss_decrease = 0.21849239286894337
epoch = 13
loss = 0.00015061800887217967
loss_decrease = 0.3571425770992094
epoch = 14
loss = 0.00010095972947187805
loss_decrease = 0.32969682557975905
epoch = 15
loss = 7.611157100931262e-05
loss_decrease = 0.24611950321723863
epoch = 16
loss = 7.358245938571716e-05
loss_decrease = 0.033229003028803744
epoch = 17
loss = 7.290986080724511e-05
loss_decrease = 0.009140746097467428
epoch = 18
loss = 7.251141260907455e-05
loss_decrease = 0.005464942516128963
epoch = 19
loss = 7.173146148556101e-05
loss_decrease = 0.010756253332402075
epoch = 20
loss = 7.124871622539364e-05
loss_decrease = 0.006729895783101251
epoch = 21
loss = 7.104596322954237e-05
loss_decrease = 0.0028457073557629367
epoch = 22
loss = 7.089560398356747e-05
loss_decrease = 0.002116365788287063
epoch = 23
loss = 7.087723465112803e-05
loss_decrease = 0.00025910396988363695
epoch = 24
loss = 7.0871908180138e-05
loss_decrease = 7.515066038116976e-05
epoch = 25
loss = 7.0871908180138e-05
loss_decrease = 0.0
epoch = 26
loss = 7.0871908180138e-05
loss_decrease = 0.0
epoch = 27
loss = 7.0871908180138e-05
loss_decrease = 0.0
epoch = 28
loss = 7.0871908180138e-05
loss_decrease = 0.0
epoch = 29
loss = 7.0871908180138e-05
loss_decrease = 0.0
* Final training loss: 7.0872e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 319
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 160
epoch = 1
loss = 0.016181149801382688
loss_decrease = 0.9838188501986174
epoch = 2
loss = 0.011229507107243663
loss_decrease = 0.30601303089820625
epoch = 3
loss = 0.007854614323258517
loss_decrease = 0.3005379267099044
epoch = 4
loss = 0.004711771939004632
loss_decrease = 0.40012688782790096
epoch = 5
loss = 0.0023567625896344707
loss_decrease = 0.4998139510690452
epoch = 6
loss = 0.0013710506720708347
loss_decrease = 0.4182482876718261
epoch = 7
loss = 0.0009008374371659693
loss_decrease = 0.34295831983704544
epoch = 8
loss = 0.0006607719522326722
loss_decrease = 0.2664914611991949
epoch = 9
loss = 0.0005435638836772038
loss_decrease = 0.17738051404790378
epoch = 10
loss = 0.0004781146314852703
loss_decrease = 0.12040765429294172
epoch = 11
loss = 0.0004403797016566881
loss_decrease = 0.07892444059149173
epoch = 12
loss = 0.00041429758983789814
loss_decrease = 0.05922641693218439
epoch = 13
loss = 0.00039159971767538496
loss_decrease = 0.054786396829858836
epoch = 14
loss = 0.0003675001683840827
loss_decrease = 0.06154128362084131
epoch = 15
loss = 0.0003401265165934424
loss_decrease = 0.07448609319283764
epoch = 16
loss = 0.0003170390834100982
loss_decrease = 0.06787895696747723
epoch = 17
loss = 0.0003003099310922949
loss_decrease = 0.05276684545597077
epoch = 18
loss = 0.0002902814853529955
loss_decrease = 0.03339365335945995
epoch = 19
loss = 0.00028511270985171454
loss_decrease = 0.017806080518692095
epoch = 20
loss = 0.00027659372065721993
loss_decrease = 0.029879373665682173
epoch = 21
loss = 0.00026073911607881633
loss_decrease = 0.05732091292864913
epoch = 22
loss = 0.00024854794778788366
loss_decrease = 0.046756192451183724
epoch = 23
loss = 0.00023490741423184267
loss_decrease = 0.0548808939178292
epoch = 24
loss = 0.00019439670696259299
loss_decrease = 0.17245393212351953
epoch = 25
loss = 0.00014461886457408678
loss_decrease = 0.2560631976038811
epoch = 26
loss = 0.00011073723455744082
loss_decrease = 0.23428222947559338
epoch = 27
loss = 7.259584823829535e-05
loss_decrease = 0.34443145046539014
epoch = 28
loss = 4.880446940371545e-05
loss_decrease = 0.3277236840939563
epoch = 29
loss = 3.6140226003547246e-05
loss_decrease = 0.2594894187949943
epoch = 30
loss = 2.102562925029649e-05
loss_decrease = 0.4182208697800402
epoch = 31
loss = 1.9744294822181086e-05
loss_decrease = 0.06094154961366195
epoch = 32
loss = 1.9477915278301944e-05
loss_decrease = 0.013491469119468663
epoch = 33
loss = 1.933505557254667e-05
loss_decrease = 0.007334445381555679
epoch = 34
loss = 1.9152879906444702e-05
loss_decrease = 0.009422039953204689
epoch = 35
loss = 1.886961130359576e-05
loss_decrease = 0.014789869942933477
epoch = 36
loss = 1.8594843850749814e-05
loss_decrease = 0.014561373227311165
epoch = 37
loss = 1.831025268872132e-05
loss_decrease = 0.015304842800119504
epoch = 38
loss = 1.808456295462286e-05
loss_decrease = 0.012325866711685382
epoch = 39
loss = 1.7899851617509445e-05
loss_decrease = 0.010213757312072575
epoch = 40
loss = 1.7816443073308816e-05
loss_decrease = 0.00465973383371733
epoch = 41
loss = 1.7762570645958926e-05
loss_decrease = 0.0030237476205673013
epoch = 42
loss = 1.770709919276239e-05
loss_decrease = 0.003122940609339991
epoch = 43
loss = 1.7650204100923796e-05
loss_decrease = 0.003213123234880258
epoch = 44
loss = 1.7627890442308154e-05
loss_decrease = 0.0012642153307719699
epoch = 45
loss = 1.7626925389763607e-05
loss_decrease = 5.474577617243604e-05
epoch = 46
loss = 1.762504541934828e-05
loss_decrease = 0.00010665333708276827
epoch = 47
loss = 1.7624197716857066e-05
loss_decrease = 4.809647130230783e-05
epoch = 48
loss = 1.762342870965756e-05
loss_decrease = 4.363360034087348e-05
epoch = 49
loss = 1.762270109322579e-05
loss_decrease = 4.12868825787175e-05
epoch = 50
loss = 1.762191797909625e-05
loss_decrease = 4.4437803569212705e-05
epoch = 51
loss = 1.7620545417267764e-05
loss_decrease = 7.788946867843275e-05
epoch = 52
loss = 1.76196914944549e-05
loss_decrease = 4.8461769635592056e-05
epoch = 53
loss = 1.76196914944549e-05
loss_decrease = 0.0
epoch = 54
loss = 1.76196914944549e-05
loss_decrease = 0.0
epoch = 55
loss = 1.76196914944549e-05
loss_decrease = 0.0
epoch = 56
loss = 1.76196914944549e-05
loss_decrease = 0.0
epoch = 57
loss = 1.76196914944549e-05
loss_decrease = 0.0
* Final training loss: 1.762e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 319
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 160
epoch = 1
loss = 0.016665281356488273
loss_decrease = 0.9833347186435117
epoch = 2
loss = 0.011560440317406514
loss_decrease = 0.3063159228988533
epoch = 3
loss = 0.008061491613637992
loss_decrease = 0.30266569505143914
epoch = 4
loss = 0.004900904555734339
loss_decrease = 0.3920598332641994
epoch = 5
loss = 0.0024816283150945807
loss_decrease = 0.49363871773610984
epoch = 6
loss = 0.0013670951065182769
loss_decrease = 0.4491136733882029
epoch = 7
loss = 0.0009002685077692825
loss_decrease = 0.3414733887373133
epoch = 8
loss = 0.0006570806111758024
loss_decrease = 0.27012818341947753
epoch = 9
loss = 0.0005392489673406813
loss_decrease = 0.1793260093678144
epoch = 10
loss = 0.00047635369061810784
loss_decrease = 0.1166349507032771
epoch = 11
loss = 0.00043893382941490727
loss_decrease = 0.0785547838511448
epoch = 12
loss = 0.0004121294074147066
loss_decrease = 0.061067113546318844
epoch = 13
loss = 0.00038865958788222583
loss_decrease = 0.05694769436548402
epoch = 14
loss = 0.00036376064179825525
loss_decrease = 0.06406363527436154
epoch = 15
loss = 0.000337050021705874
loss_decrease = 0.07342910975837562
epoch = 16
loss = 0.0003147803102970586
loss_decrease = 0.06607242241405059
epoch = 17
loss = 0.00029971946453073717
loss_decrease = 0.04784557760969378
epoch = 18
loss = 0.00029074198588307067
loss_decrease = 0.029952938364287744
epoch = 19
loss = 0.00028637033366228615
loss_decrease = 0.01503619165118687
epoch = 20
loss = 0.00027229384106142445
loss_decrease = 0.04915485630387252
epoch = 21
loss = 0.0002617131842472673
loss_decrease = 0.038857495905573386
epoch = 22
loss = 0.0002486879302819193
loss_decrease = 0.04976919295377073
epoch = 23
loss = 0.0002340759434094773
loss_decrease = 0.058756317027036445
epoch = 24
loss = 0.0001885359956601158
loss_decrease = 0.19455202053675746
epoch = 25
loss = 0.00013309048363404494
loss_decrease = 0.2940844894469146
epoch = 26
loss = 0.00010749971234445016
loss_decrease = 0.1922810000447589
epoch = 27
loss = 7.028877966015916e-05
loss_decrease = 0.34614913726522234
epoch = 28
loss = 4.7197481766818024e-05
loss_decrease = 0.32852039834786984
epoch = 29
loss = 3.386999844969564e-05
loss_decrease = 0.28237700017487394
epoch = 30
loss = 2.162247317125721e-05
loss_decrease = 0.3616039515510663
epoch = 31
loss = 2.0429982858169357e-05
loss_decrease = 0.05515050492341603
epoch = 32
loss = 2.0139280003059277e-05
loss_decrease = 0.01422922657978816
epoch = 33
loss = 1.994815069407106e-05
loss_decrease = 0.009490374480079973
epoch = 34
loss = 1.971604937804435e-05
loss_decrease = 0.011635229730628274
epoch = 35
loss = 1.9454013503865242e-05
loss_decrease = 0.013290485794324932
epoch = 36
loss = 1.9036959681790824e-05
loss_decrease = 0.021437932177417022
epoch = 37
loss = 1.86575796038721e-05
loss_decrease = 0.01992860647184158
epoch = 38
loss = 1.83364736287842e-05
loss_decrease = 0.017210483991249262
epoch = 39
loss = 1.805935029955252e-05
loss_decrease = 0.015113229230546248
epoch = 40
loss = 1.79564503215367e-05
loss_decrease = 0.005697878179945964
epoch = 41
loss = 1.7881020234934934e-05
loss_decrease = 0.0042007237093678205
epoch = 42
loss = 1.7817274776649173e-05
loss_decrease = 0.003564978812630506
epoch = 43
loss = 1.7771266332540003e-05
loss_decrease = 0.002582238006985662
epoch = 44
loss = 1.775557421253707e-05
loss_decrease = 0.0008830051674033518
epoch = 45
loss = 1.775557421253707e-05
loss_decrease = 0.0
epoch = 46
loss = 1.775557421253707e-05
loss_decrease = 0.0
epoch = 47
loss = 1.775557421253707e-05
loss_decrease = 0.0
epoch = 48
loss = 1.775557421253707e-05
loss_decrease = 0.0
epoch = 49
loss = 1.775557421253707e-05
loss_decrease = 0.0
* Final training loss: 1.7756e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 319
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 160
epoch = 1
loss = 0.01682802625975537
loss_decrease = 0.9831719737402447
epoch = 2
loss = 0.011533131862094688
loss_decrease = 0.31464738145337634
epoch = 3
loss = 0.007998056523026249
loss_decrease = 0.30651477684799366
epoch = 4
loss = 0.004747130412828397
loss_decrease = 0.4064645080762432
epoch = 5
loss = 0.0024341035538316415
loss_decrease = 0.4872473805956863
epoch = 6
loss = 0.0013640283429587022
loss_decrease = 0.4396177842099123
epoch = 7
loss = 0.0008837126587352079
loss_decrease = 0.3521302813852428
epoch = 8
loss = 0.0006512829588594291
loss_decrease = 0.2630150169042934
epoch = 9
loss = 0.0005418071505775941
loss_decrease = 0.1680925422546853
epoch = 10
loss = 0.00047540780390433244
loss_decrease = 0.12255162487700012
epoch = 11
loss = 0.00043830953729696886
loss_decrease = 0.07803461849530126
epoch = 12
loss = 0.00041229166414164474
loss_decrease = 0.05935958709859459
epoch = 13
loss = 0.00039000378608884743
loss_decrease = 0.05405852213674688
epoch = 14
loss = 0.00036491526789250587
loss_decrease = 0.06432890933685989
epoch = 15
loss = 0.0003380117638132013
loss_decrease = 0.07372534515938531
epoch = 16
loss = 0.00031453774116516796
loss_decrease = 0.06944735408974116
epoch = 17
loss = 0.0002994653157470096
loss_decrease = 0.04791929058282272
epoch = 18
loss = 0.00029086294894742305
loss_decrease = 0.028725753358542164
epoch = 19
loss = 0.00028676183804231335
loss_decrease = 0.014099805148613226
epoch = 20
loss = 0.00027328867315955165
loss_decrease = 0.04698381407631254
epoch = 21
loss = 0.0002619244490093529
loss_decrease = 0.04158322413737247
epoch = 22
loss = 0.00024922046490481585
loss_decrease = 0.04850247524652959
epoch = 23
loss = 0.00023407776193313867
loss_decrease = 0.06076027094107458
epoch = 24
loss = 0.0001906232442415402
loss_decrease = 0.18564137546740003
epoch = 25
loss = 0.00013685925418907566
loss_decrease = 0.2820432013230232
epoch = 26
loss = 0.00010980503036081743
loss_decrease = 0.19767917038976343
epoch = 27
loss = 7.286701984530683e-05
loss_decrease = 0.3363963417170683
epoch = 28
loss = 4.868892501955395e-05
loss_decrease = 0.33181122100343624
epoch = 29
loss = 3.4935613837760024e-05
loss_decrease = 0.28247309169940515
epoch = 30
loss = 2.164997071017085e-05
loss_decrease = 0.38028938576225724
epoch = 31
loss = 2.0696983129314953e-05
loss_decrease = 0.04401796166902879
epoch = 32
loss = 2.0455106379553156e-05
loss_decrease = 0.011686570368760944
epoch = 33
loss = 2.022221600479431e-05
loss_decrease = 0.011385439431967116
epoch = 34
loss = 1.9860334813447915e-05
loss_decrease = 0.01789522924988041
epoch = 35
loss = 1.9309406275996797e-05
loss_decrease = 0.027740143488319772
epoch = 36
loss = 1.892096423539501e-05
loss_decrease = 0.020116726275766147
epoch = 37
loss = 1.8662504879736473e-05
loss_decrease = 0.013659946313678948
epoch = 38
loss = 1.8480712017152617e-05
loss_decrease = 0.009741075153381172
epoch = 39
loss = 1.8300077050277428e-05
loss_decrease = 0.009774242827199285
epoch = 40
loss = 1.815784885650093e-05
loss_decrease = 0.00777199972359353
epoch = 41
loss = 1.805314766535535e-05
loss_decrease = 0.00576616712546843
epoch = 42
loss = 1.7903590602282986e-05
loss_decrease = 0.008284265206525225
epoch = 43
loss = 1.7812253231678595e-05
loss_decrease = 0.0051016230561451385
epoch = 44
loss = 1.777669964040959e-05
loss_decrease = 0.0019960187409515805
epoch = 45
loss = 1.7774165922220973e-05
loss_decrease = 0.00014253029189158163
epoch = 46
loss = 1.7771438616731006e-05
loss_decrease = 0.0001534421081642811
epoch = 47
loss = 1.7767555599405195e-05
loss_decrease = 0.0002184976359851065
epoch = 48
loss = 1.7762066819754523e-05
loss_decrease = 0.00030892148444190513
epoch = 49
loss = 1.7759641867220118e-05
loss_decrease = 0.00013652423217482972
epoch = 50
loss = 1.7759641867220118e-05
loss_decrease = 0.0
epoch = 51
loss = 1.7759641867220118e-05
loss_decrease = 0.0
epoch = 52
loss = 1.7759641867220118e-05
loss_decrease = 0.0
epoch = 53
loss = 1.7759641867220118e-05
loss_decrease = 0.0
epoch = 54
loss = 1.7759641867220118e-05
loss_decrease = 0.0
* Final training loss: 1.776e-05
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 3-node quadratic bar
* Number of Dofs: 319
_ _ ____ ___ __ __
| \ | | ___ _ _| _ \ / _ \| \/ |
| \| |/ _ \ | | | |_) | | | | |\/| |
| |\ | __/ |_| | _ <| |_| | | | |
|_| \_|\___|\__,_|_| \_\ ___/|_| |_|
2024.09.18
************ MESH READING COMPLETE ************
* Dimension of the problem: 1D
* Elements type: 2-node bar
* Number of Dofs: 160
epoch = 1
loss = 0.016722037531690367
loss_decrease = 0.9832779624683097
epoch = 2
loss = 0.011498230720766462
loss_decrease = 0.31239056849526464
epoch = 3
loss = 0.008138200716514585
loss_decrease = 0.292221480491209
epoch = 4
loss = 0.0048920830841078095
loss_decrease = 0.3988741179385678
epoch = 5
loss = 0.0024709536905875447
loss_decrease = 0.49490766037589007
epoch = 6
loss = 0.001400177737010025
loss_decrease = 0.43334521308770874
epoch = 7
loss = 0.0009158609338204167
loss_decrease = 0.34589666039386585
epoch = 8
loss = 0.0006679062938610273
loss_decrease = 0.2707339409325747
epoch = 9
loss = 0.0005481067975240823
loss_decrease = 0.17936572456056535
epoch = 10
loss = 0.0004824961247519558
loss_decrease = 0.11970417639136056
epoch = 11
loss = 0.0004418856166783728
loss_decrease = 0.0841675321111859
epoch = 12
loss = 0.0004151750690744849
loss_decrease = 0.060446745935451476
epoch = 13
loss = 0.0003917690275678299
loss_decrease = 0.056376317486577746
epoch = 14
loss = 0.0003679020980992208
loss_decrease = 0.06092091969796375
epoch = 15
loss = 0.00033971900866117274
loss_decrease = 0.07660486195555005
epoch = 16
loss = 0.0003158502407637446
loss_decrease = 0.07026032482402018
epoch = 17
loss = 0.00030069336175983833
loss_decrease = 0.047987549312155195
epoch = 18
loss = 0.00029188904682276814
loss_decrease = 0.02928004424687677
epoch = 19
loss = 0.0002871998446455844
loss_decrease = 0.016065015896368898
epoch = 20
loss = 0.0002793880574309116
loss_decrease = 0.027199830920218188
epoch = 21
loss = 0.00026346216165441924
loss_decrease = 0.05700277929893467
epoch = 22
loss = 0.0002510998674852701
loss_decrease = 0.04692246541787901
epoch = 23
loss = 0.00023759483677076806
loss_decrease = 0.0537835039490583
epoch = 24
loss = 0.00019899157905631522
loss_decrease = 0.16247515408635474
epoch = 25
loss = 0.0001451034294336973
loss_decrease = 0.2708061812372844
epoch = 26
loss = 0.000111625266510766
loss_decrease = 0.23071930865857737
epoch = 27
loss = 7.556385408527957e-05
loss_decrease = 0.3230577946437278
epoch = 28
loss = 4.921411228258394e-05
loss_decrease = 0.348708282837955
epoch = 29
loss = 3.630834520526812e-05
loss_decrease = 0.2622371201823539
epoch = 30
loss = 2.2454141023428136e-05
loss_decrease = 0.3815707960116514
epoch = 31
loss = 2.0747671852622327e-05
loss_decrease = 0.07599797155568405
epoch = 32
loss = 2.03602332074313e-05
loss_decrease = 0.018673837139083996
epoch = 33
loss = 2.0137578301095715e-05
loss_decrease = 0.010935773871898395
epoch = 34
loss = 1.9938717745093704e-05
loss_decrease = 0.009875097840895346
epoch = 35
loss = 1.9688138330650274e-05
loss_decrease = 0.012567478894428354
epoch = 36
loss = 1.926747027890837e-05
loss_decrease = 0.021366573348736286
epoch = 37
loss = 1.880288344192116e-05
loss_decrease = 0.024112497918098788
epoch = 38
loss = 1.8378702019872707e-05
loss_decrease = 0.022559381562869133
epoch = 39
loss = 1.807059568078186e-05
loss_decrease = 0.016764314409020573
epoch = 40
loss = 1.7932507452088847e-05
loss_decrease = 0.0076415980486946354
epoch = 41
loss = 1.7841768577781897e-05
loss_decrease = 0.0050600215585791235
epoch = 42
loss = 1.7783386170964627e-05
loss_decrease = 0.0032722320415013544
epoch = 43
loss = 1.7751984087279154e-05
loss_decrease = 0.0017658101434440906
epoch = 44
loss = 1.774994805003059e-05
loss_decrease = 0.00011469350347287001
epoch = 45
loss = 1.774668664865138e-05
loss_decrease = 0.0001837414605393605
epoch = 46
loss = 1.7745776750722987e-05
loss_decrease = 5.1271425838883427e-05
epoch = 47
loss = 1.7732693067240316e-05
loss_decrease = 0.0007372843503250879
epoch = 48
loss = 1.7732693067240316e-05
loss_decrease = 0.0
epoch = 49
loss = 1.7732693067240316e-05
loss_decrease = 0.0
epoch = 50
loss = 1.7732693067240316e-05
loss_decrease = 0.0
epoch = 51
loss = 1.7732693067240316e-05
loss_decrease = 0.0
epoch = 52
loss = 1.7732693067240316e-05
loss_decrease = 0.0
* Final training loss: 1.7733e-05
import matplotlib.pyplot as plt
import matplotlib
plt.rcParams['text.usetex'] = False
# Plot normalized displacement error
fig = matplotlib.pyplot.gcf()
ax = plt.gca()
plt.plot(mesh_resolution_r, loss_u_r[:,0],'-', color = "cyan", label = 'Residual loss, 10 p./e.')
plt.plot(mesh_resolution_r, loss_u_r[:,1],'-', color = "darkblue", label = 'Residual loss, 25 p./e.')
plt.plot(mesh_resolution_r, loss_u_r[:,2],'-', color = "darkgreen", label = 'Residual loss, 50 p./e.')
plt.plot(mesh_resolution_r, loss_u_r[:,3],'-', color = "yellowgreen", label = 'Residual loss, 75 p./e.')
plt.plot(mesh_resolution_w, loss_u_w[:,0],'-', color = "plum", label = 'Weak eq. loss, G.q.(3)')
plt.plot(mesh_resolution_w, loss_u_w[:,1],'-', color = "pink", label = 'Weak eq. loss, G.q.(4)')
plt.plot(mesh_resolution_w, loss_u_w[:,1],'-', color = "indigo", label = 'Weak eq. loss, G.q.(5)')
plt.plot(mesh_resolution_pe, loss_u_pe,'--', color = "gray", label = 'Potential energy loss, G.q.(5)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_ylim([0.0011, 1.3])
plt.xlabel("Number of mesh nodes")
plt.ylabel("Normalized displacement error")
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5),frameon=False )
plt.show()
# Plot normalized strain error
fig = matplotlib.pyplot.gcf()
ax = plt.gca()
plt.plot(mesh_resolution_r, loss_grad_r[:,0],'-', color = "cyan", label = 'Residual loss, 10 p./e.')
plt.plot(mesh_resolution_r, loss_grad_r[:,1],'-', color = "darkblue", label = 'Residual loss, 25 p./e.')
plt.plot(mesh_resolution_r, loss_grad_r[:,2],'-', color = "darkgreen", label = 'Residual loss, 50 p./e.')
plt.plot(mesh_resolution_r, loss_grad_r[:,3],'-', color = "yellowgreen", label = 'Residual loss, 75 p./e.')
plt.plot(mesh_resolution_w, loss_grad_w[:,0],'-', color = "plum", label = 'Weak eq. loss, G.q.(3)')
plt.plot(mesh_resolution_w, loss_grad_w[:,1],'-', color = "pink", label = 'Weak eq. loss, G.q.(4)')
plt.plot(mesh_resolution_w, loss_grad_w[:,1],'-', color = "indigo", label = 'Weak eq. loss, G.q.(5)')
plt.plot(mesh_resolution_pe, loss_grad_pe,'--', color = "gray", label = 'Potential energy loss, G.q.(5)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_ylim([0.005, 1.1])
plt.xlabel("Number of mesh nodes")
plt.ylabel("Normalized strain error")
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5),frameon=False )
plt.show()