1D Case - Figures 8b and 8d

1D Case - Figures 8b and 8d#

Investigation of the influence of

  • mesh resolution

  • the number of quadrature points when computing the loss with the Gaussian quadrature rule

The study has been done on fixed and r-adapted meshes.

#%% 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 mechanical functions

from neurom.src.Training import Training_1D_FEM_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: Gauss quadrature
# Tested variants: 6 mesh resolutions, 3-,4- and 5-point quadrature rule, fixed and r-adaptive mesh

mesh_resolution = [10,21,41,80,160,324]
quadrature_points = [3,4,5]

setting = ["fixed", "r-adaptive"]

config["solver"]["IntegralMethod"] = "Gaussian_quad"

loss_u = numpy.zeros((len(setting),len(mesh_resolution), len(quadrature_points)))
loss_grad = numpy.zeros((len(setting),len(mesh_resolution), len(quadrature_points)))

for q in range(len(quadrature_points)):
    config["interpolation"]["n_integr_points"] = quadrature_points[q]
    for set in range(len(setting)):
        if setting[set] == "fixed":
            config["solver"]["FrozenMesh"] = True
        elif setting[set] == "r-adaptive":
            config["solver"]["FrozenMesh"] = False

        for res in range(len(mesh_resolution)):

            config["interpolation"]["np"] = mesh_resolution[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)

            l2_loss, l2_loss_grad = Pplot.Normalized_error_1D(Model_FEM,config,Mat)

            
            loss_u[set, res, q] = l2_loss
            loss_grad[set, res, q] = l2_loss_grad
 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.012880413395373335
     loss_decrease =  1.0128804133953733
epoch =  2
     loss =  -0.012880413395373335
     loss_decrease =  0.0
epoch =  3
     loss =  -0.012880413395373335
     loss_decrease =  0.0
epoch =  4
     loss =  -0.012880413395373335
     loss_decrease =  0.0
epoch =  5
     loss =  -0.012880413395373335
     loss_decrease =  0.0
epoch =  6
     loss =  -0.012880413395373335
     loss_decrease =  0.0
* Final training loss: -1.2880e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.02640650203142158
     loss_decrease =  1.0264065020314215
epoch =  2
     loss =  -0.026510943498860597
     loss_decrease =  0.00395514208261062
epoch =  3
     loss =  -0.026510943498860597
     loss_decrease =  0.0
epoch =  4
     loss =  -0.026510943498860597
     loss_decrease =  0.0
epoch =  5
     loss =  -0.026510943498860597
     loss_decrease =  0.0
epoch =  6
     loss =  -0.026510943498860597
     loss_decrease =  0.0
epoch =  7
     loss =  -0.026510943498860597
     loss_decrease =  0.0
* Final training loss: -2.6511e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.2899387404897017
     loss_decrease =  0.7100612595102983
epoch =  2
     loss =  -0.029972552618226567
     loss_decrease =  1.1033754667196367
epoch =  3
     loss =  -0.03000798023719271
     loss_decrease =  0.001182002060932223
epoch =  4
     loss =  -0.03000798023719271
     loss_decrease =  0.0
epoch =  5
     loss =  -0.03000798023719271
     loss_decrease =  0.0
epoch =  6
     loss =  -0.03000798023719271
     loss_decrease =  0.0
epoch =  7
     loss =  -0.03000798023719271
     loss_decrease =  0.0
epoch =  8
     loss =  -0.03000798023719271
     loss_decrease =  0.0
* Final training loss: -3.0008e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.6288340606213749
     loss_decrease =  0.3711659393786251
epoch =  2
     loss =  0.30664343227818863
     loss_decrease =  0.5123619226745089
epoch =  3
     loss =  -0.030312420444596255
     loss_decrease =  1.0988523387551201
epoch =  4
     loss =  -0.031085753858900063
     loss_decrease =  0.025512097119307027
epoch =  5
     loss =  -0.031120088656901156
     loss_decrease =  0.0011045187501947118
epoch =  6
     loss =  -0.031120088656901156
     loss_decrease =  0.0
epoch =  7
     loss =  -0.031120088656901156
     loss_decrease =  0.0
epoch =  8
     loss =  -0.031120088656901156
     loss_decrease =  0.0
epoch =  9
     loss =  -0.031120088656901156
     loss_decrease =  0.0
epoch =  10
     loss =  -0.031120088656901156
     loss_decrease =  0.0
* Final training loss: -3.1120e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.2997354148663827
     loss_decrease =  -0.29973541486638267
epoch =  2
     loss =  0.6372422738026718
     loss_decrease =  0.5097138490542842
epoch =  3
     loss =  0.41881820253429336
     loss_decrease =  0.342764565767047
epoch =  4
     loss =  0.3067637348496916
     loss_decrease =  0.2675491824532784
epoch =  5
     loss =  -0.029269298266880114
     loss_decrease =  1.0954131631016344
epoch =  6
     loss =  -0.030610327531555633
     loss_decrease =  0.04581692572359924
epoch =  7
     loss =  -0.0311348624706043
     loss_decrease =  0.017135881297184265
epoch =  8
     loss =  -0.0313773085469604
     loss_decrease =  0.007786964743621467
epoch =  9
     loss =  -0.031417697791288744
     loss_decrease =  0.0012872118801361206
epoch =  10
     loss =  -0.03141774220799398
     loss_decrease =  1.4137479306243473e-06
epoch =  11
     loss =  -0.03141774220799398
     loss_decrease =  0.0
epoch =  12
     loss =  -0.03141774220799398
     loss_decrease =  0.0
epoch =  13
     loss =  -0.03141774220799398
     loss_decrease =  0.0
epoch =  14
     loss =  -0.03141774220799398
     loss_decrease =  0.0
epoch =  15
     loss =  -0.03141774220799398
     loss_decrease =  0.0
* Final training loss: -3.1418e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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 =  2.766709318960943
     loss_decrease =  -1.766709318960943
epoch =  2
     loss =  1.3729149889035779
     loss_decrease =  0.503773316736004
epoch =  3
     loss =  0.8802528972640002
     loss_decrease =  0.3588438436621789
epoch =  4
     loss =  0.6594251560601
     loss_decrease =  0.2508685195928084
epoch =  5
     loss =  0.529567132995965
     loss_decrease =  0.1969260982398732
epoch =  6
     loss =  0.43838711240891726
     loss_decrease =  0.1721783979893301
epoch =  7
     loss =  0.36664816565684216
     loss_decrease =  0.16364291905816492
epoch =  8
     loss =  0.31888619905050497
     loss_decrease =  0.13026648182126502
epoch =  9
     loss =  0.24402686506469262
     loss_decrease =  0.23475250483937118
epoch =  10
     loss =  -0.028716034885372513
     loss_decrease =  1.1176757111466384
epoch =  11
     loss =  -0.030108730172630903
     loss_decrease =  0.048498871547471435
epoch =  12
     loss =  -0.03052496756741886
     loss_decrease =  0.013824475240284928
epoch =  13
     loss =  -0.030903381167604885
     loss_decrease =  0.012396855110500777
epoch =  14
     loss =  -0.03114046563752024
     loss_decrease =  0.007671797096554725
epoch =  15
     loss =  -0.0312936835639943
     loss_decrease =  0.004920219506591128
epoch =  16
     loss =  -0.03142926002591829
     loss_decrease =  0.004332390645119874
epoch =  17
     loss =  -0.03147299568589841
     loss_decrease =  0.0013915586922522332
epoch =  18
     loss =  -0.03149143092890119
     loss_decrease =  0.000585747959513169
epoch =  19
     loss =  -0.031492180015897
     loss_decrease =  2.3787010425118394e-05
epoch =  20
     loss =  -0.03149222615128921
     loss_decrease =  1.4649793118369932e-06
epoch =  21
     loss =  -0.031492227447639444
     loss_decrease =  4.1164134579230756e-08
epoch =  22
     loss =  -0.031492227447639444
     loss_decrease =  0.0
epoch =  23
     loss =  -0.031492227447639444
     loss_decrease =  0.0
epoch =  24
     loss =  -0.031492227447639444
     loss_decrease =  0.0
epoch =  25
     loss =  -0.031492227447639444
     loss_decrease =  0.0
* Final training loss: -3.1492e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.02345344503485764
     loss_decrease =  1.0234534450348576
Correction
epoch =  2
     loss =  0.060985625290614145
     loss_decrease =  -3.600284316439413
Correction
epoch =  3
     loss =  2.6685454890084674
     loss_decrease =  -42.75695873071853
Correction
epoch =  4
     loss =  2.571814387875291
     loss_decrease =  0.03624862365344887
Correction
epoch =  5
     loss =  -0.013483699544506136
     loss_decrease =  1.0052428742945347
Correction
epoch =  6
     loss =  -0.0011422477291338357
     loss_decrease =  -0.9152867708625828
Correction
epoch =  7
     loss =  -0.022031735399951638
     loss_decrease =  18.28805357893621
epoch =  8
     loss =  -0.029355330465270835
     loss_decrease =  0.3324111756232908
Correction
Correction
Correction
epoch =  9
     loss =  5361.756998124403
     loss_decrease =  -182651.200598753
Correction
epoch =  10
     loss =  1.3947781462962014
     loss_decrease =  0.9997398654682067
epoch =  11
     loss =  -0.0214893050501363
     loss_decrease =  1.0154069699953363
Correction
Correction
Correction
Correction
epoch =  12
     loss =  2.6811478330917398
     loss_decrease =  -125.76661422211667
Correction
Correction
Correction
Correction
epoch =  13
     loss =  0.2336592820897402
     loss_decrease =  0.912851026263517
Correction
epoch =  14
     loss =  0.21213274980106012
     loss_decrease =  0.09212787138673362
Correction
epoch =  15
     loss =  0.77890570657198
     loss_decrease =  -2.6717843298710093
Correction
Correction
epoch =  16
     loss =  96.1642592099574
     loss_decrease =  -122.46071982600206
Correction
Correction
epoch =  17
     loss =  17653201.412670996
     loss_decrease =  -183572.41446501866
Correction
Correction
epoch =  18
     loss =  527556059290816.4
     loss_decrease =  -29884440.18199154
Correction
Correction
epoch =  19
     loss =  4.709529892018963e+29
     loss_decrease =  -892707004133340.8
Correction
Correction
epoch =  20
     loss =  3.753144032577062e+59
     loss_decrease =  -7.969254084016652e+29
Correction
Correction
epoch =  21
     loss =  2.383584642540439e+119
     loss_decrease =  -6.350901062818451e+59
Correction
Correction
epoch =  22
     loss =  9.613937022966571e+238
     loss_decrease =  -4.0333944309693064e+119
Correction
Correction
epoch =  23
     loss =  inf
     loss_decrease =  -inf
epoch =  24
     loss =  nan
     loss_decrease =  nan
epoch =  25
     loss =  nan
     loss_decrease =  nan
epoch =  26
     loss =  nan
     loss_decrease =  nan
epoch =  27
     loss =  nan
     loss_decrease =  nan
epoch =  28
     loss =  nan
     loss_decrease =  nan
epoch =  29
     loss =  nan
     loss_decrease =  nan
epoch =  30
     loss =  nan
     loss_decrease =  nan
epoch =  31
     loss =  nan
     loss_decrease =  nan
epoch =  32
     loss =  nan
     loss_decrease =  nan
epoch =  33
     loss =  nan
     loss_decrease =  nan
epoch =  34
     loss =  nan
     loss_decrease =  nan
epoch =  35
     loss =  nan
     loss_decrease =  nan
epoch =  36
     loss =  nan
     loss_decrease =  nan
epoch =  37
     loss =  nan
     loss_decrease =  nan
epoch =  38
     loss =  nan
     loss_decrease =  nan
epoch =  39
     loss =  nan
     loss_decrease =  nan
epoch =  40
     loss =  nan
     loss_decrease =  nan
epoch =  41
     loss =  nan
     loss_decrease =  nan
epoch =  42
     loss =  nan
     loss_decrease =  nan
epoch =  43
     loss =  nan
     loss_decrease =  nan
epoch =  44
     loss =  nan
     loss_decrease =  nan
epoch =  45
     loss =  nan
     loss_decrease =  nan
epoch =  46
     loss =  nan
     loss_decrease =  nan
epoch =  47
     loss =  nan
     loss_decrease =  nan
epoch =  48
     loss =  nan
     loss_decrease =  nan
epoch =  49
     loss =  nan
     loss_decrease =  nan
epoch =  50
     loss =  nan
     loss_decrease =  nan
epoch =  51
     loss =  nan
     loss_decrease =  nan
epoch =  52
     loss =  nan
     loss_decrease =  nan
epoch =  53
     loss =  nan
     loss_decrease =  nan
epoch =  54
     loss =  nan
     loss_decrease =  nan
epoch =  55
     loss =  nan
     loss_decrease =  nan
epoch =  56
     loss =  nan
     loss_decrease =  nan
epoch =  57
     loss =  nan
     loss_decrease =  nan
epoch =  58
     loss =  nan
     loss_decrease =  nan
epoch =  59
     loss =  nan
     loss_decrease =  nan
epoch =  60
     loss =  nan
     loss_decrease =  nan
epoch =  61
     loss =  nan
     loss_decrease =  nan
epoch =  62
     loss =  nan
     loss_decrease =  nan
epoch =  63
     loss =  nan
     loss_decrease =  nan
epoch =  64
     loss =  nan
     loss_decrease =  nan
epoch =  65
     loss =  nan
     loss_decrease =  nan
epoch =  66
     loss =  nan
     loss_decrease =  nan
epoch =  67
     loss =  nan
     loss_decrease =  nan
epoch =  68
     loss =  nan
     loss_decrease =  nan
epoch =  69
     loss =  nan
     loss_decrease =  nan
epoch =  70
     loss =  nan
     loss_decrease =  nan
epoch =  71
     loss =  nan
     loss_decrease =  nan
epoch =  72
     loss =  nan
     loss_decrease =  nan
epoch =  73
     loss =  nan
     loss_decrease =  nan
epoch =  74
     loss =  nan
     loss_decrease =  nan
epoch =  75
     loss =  nan
     loss_decrease =  nan
epoch =  76
     loss =  nan
     loss_decrease =  nan
epoch =  77
     loss =  nan
     loss_decrease =  nan
epoch =  78
     loss =  nan
     loss_decrease =  nan
epoch =  79
     loss =  nan
     loss_decrease =  nan
epoch =  80
     loss =  nan
     loss_decrease =  nan
epoch =  81
     loss =  nan
     loss_decrease =  nan
epoch =  82
     loss =  nan
     loss_decrease =  nan
epoch =  83
     loss =  nan
     loss_decrease =  nan
epoch =  84
     loss =  nan
     loss_decrease =  nan
epoch =  85
     loss =  nan
     loss_decrease =  nan
epoch =  86
     loss =  nan
     loss_decrease =  nan
epoch =  87
     loss =  nan
     loss_decrease =  nan
epoch =  88
     loss =  nan
     loss_decrease =  nan
epoch =  89
     loss =  nan
     loss_decrease =  nan
epoch =  90
     loss =  nan
     loss_decrease =  nan
epoch =  91
     loss =  nan
     loss_decrease =  nan
epoch =  92
     loss =  nan
     loss_decrease =  nan
epoch =  93
     loss =  nan
     loss_decrease =  nan
epoch =  94
     loss =  nan
     loss_decrease =  nan
epoch =  95
     loss =  nan
     loss_decrease =  nan
epoch =  96
     loss =  nan
     loss_decrease =  nan
epoch =  97
     loss =  nan
     loss_decrease =  nan
epoch =  98
     loss =  nan
     loss_decrease =  nan
epoch =  99
     loss =  nan
     loss_decrease =  nan
epoch =  100
     loss =  nan
     loss_decrease =  nan
* Final training loss: nan

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.026408687980821535
     loss_decrease =  1.0264086879808216
epoch =  2
     loss =  -0.027354404018971185
     loss_decrease =  0.03581079222248547
epoch =  3
     loss =  -0.027386271070905712
     loss_decrease =  0.0011649697033218733
epoch =  4
     loss =  -0.02755579325755699
     loss_decrease =  0.006190042675484011
epoch =  5
     loss =  -0.027585874746659488
     loss_decrease =  0.001091657526289729
epoch =  6
     loss =  -0.027585993361344926
     loss_decrease =  4.299834119005778e-06
epoch =  7
     loss =  -0.027585993361344926
     loss_decrease =  0.0
epoch =  8
     loss =  -0.027585993361344926
     loss_decrease =  0.0
epoch =  9
     loss =  -0.027585993361344926
     loss_decrease =  0.0
epoch =  10
     loss =  -0.027585993361344926
     loss_decrease =  0.0
epoch =  11
     loss =  -0.027585993361344926
     loss_decrease =  0.0
* Final training loss: -2.7586e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.3033096606516888
     loss_decrease =  0.6966903393483113
epoch =  2
     loss =  -0.029975057368729432
     loss_decrease =  1.098826583051543
epoch =  3
     loss =  -0.03039827995010227
     loss_decrease =  0.014119158344442528
epoch =  4
     loss =  -0.030626069506167117
     loss_decrease =  0.007493501488859065
epoch =  5
     loss =  -0.03063529623657595
     loss_decrease =  0.00030127047177809534
epoch =  6
     loss =  -0.03063529623657595
     loss_decrease =  0.0
epoch =  7
     loss =  -0.03063529623657595
     loss_decrease =  0.0
epoch =  8
     loss =  -0.03063529623657595
     loss_decrease =  0.0
epoch =  9
     loss =  -0.03063529623657595
     loss_decrease =  0.0
epoch =  10
     loss =  -0.03063529623657595
     loss_decrease =  0.0
* Final training loss: -3.0635e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.636684576594095
     loss_decrease =  0.36331542340590495
epoch =  2
     loss =  0.3115845255293267
     loss_decrease =  0.5106139884899852
epoch =  3
     loss =  -0.030165494407746588
     loss_decrease =  1.0968131981410205
epoch =  4
     loss =  -0.03107536885838808
     loss_decrease =  0.030162756106123442
epoch =  5
     loss =  -0.031124186747844573
     loss_decrease =  0.0015709512469171197
epoch =  6
     loss =  -0.031124186747844573
     loss_decrease =  0.0
epoch =  7
     loss =  -0.031124186747844573
     loss_decrease =  0.0
epoch =  8
     loss =  -0.031124186747844573
     loss_decrease =  0.0
epoch =  9
     loss =  -0.031124186747844573
     loss_decrease =  0.0
epoch =  10
     loss =  -0.031124186747844573
     loss_decrease =  0.0
* Final training loss: -3.1124e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ 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.3435185711081117
     loss_decrease =  -0.3435185711081117
epoch =  2
     loss =  0.6612229448060266
     loss_decrease =  0.5078423484234676
epoch =  3
     loss =  0.4334143143250511
     loss_decrease =  0.34452620295535025
epoch =  4
     loss =  0.31586825810567665
     loss_decrease =  0.2712094463294942
epoch =  5
     loss =  -0.027987436391144416
     loss_decrease =  1.0886047764311315
epoch =  6
     loss =  -0.030494805776594684
     loss_decrease =  0.0895891052830988
epoch =  7
     loss =  -0.031066065982094795
     loss_decrease =  0.018733033083901885
epoch =  8
     loss =  -0.03134802090613749
     loss_decrease =  0.009075977763170954
epoch =  9
     loss =  -0.03141718191235145
     loss_decrease =  0.0022062319793980144
epoch =  10
     loss =  -0.031418447001685924
     loss_decrease =  4.026743512537158e-05
epoch =  11
     loss =  -0.031418447001685924
     loss_decrease =  0.0
epoch =  12
     loss =  -0.031418447001685924
     loss_decrease =  0.0
epoch =  13
     loss =  -0.031418447001685924
     loss_decrease =  0.0
epoch =  14
     loss =  -0.031418447001685924
     loss_decrease =  0.0
epoch =  15
     loss =  -0.031418447001685924
     loss_decrease =  0.0
* Final training loss: -3.1418e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.16

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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)
Correction
epoch =  1
     loss =  10.449698943633352
     loss_decrease =  -9.449698943633352
Correction
epoch =  2
     loss =  2.7755108885072706
     loss_decrease =  0.7343932199885725
Correction
epoch =  3
     loss =  1.4971597323436407
     loss_decrease =  0.460582288275999
Correction
epoch =  4
     loss =  1.0150380448259528
     loss_decrease =  0.32202421498671946
Correction
epoch =  5
     loss =  0.7766734263555162
     loss_decrease =  0.23483318648544715
Correction
epoch =  6
     loss =  0.6074912610631291
     loss_decrease =  0.21782921824203785
epoch =  7
     loss =  0.49602254074211055
     loss_decrease =  0.18349024498878344
epoch =  8
     loss =  0.43810299373957484
     loss_decrease =  0.11676797372127679
epoch =  9
     loss =  0.36835608541095355
     loss_decrease =  0.15920208107521291
epoch =  10
     loss =  0.3300329822754282
     loss_decrease =  0.10403819742185193
epoch =  11
     loss =  0.30018721833715456
     loss_decrease =  0.09043267049402336
epoch =  12
     loss =  0.08572319193279204
     loss_decrease =  0.7144342373814456
Correction
epoch =  13
     loss =  -0.0038912813198031197
     loss_decrease =  1.045393565405893
Correction
epoch =  14
     loss =  -0.02903738347572926
     loss_decrease =  6.4621650529236
epoch =  15
     loss =  -0.029793688156009787
     loss_decrease =  0.02604589634987873
epoch =  16
     loss =  -0.030551540400571855
     loss_decrease =  0.02543667103561327
epoch =  17
     loss =  -0.030890346131178015
     loss_decrease =  0.011089644782683962
epoch =  18
     loss =  -0.031034568044480782
     loss_decrease =  0.004668834486033864
epoch =  19
     loss =  -0.03122285081419582
     loss_decrease =  0.006066872574001254
epoch =  20
     loss =  -0.031330532089145186
     loss_decrease =  0.003448797023377785
epoch =  21
     loss =  -0.0314674655357221
     loss_decrease =  0.00437060711855434
epoch =  22
     loss =  -0.03148955260174309
     loss_decrease =  0.000701901651275914
epoch =  23
     loss =  -0.0314921692112957
     loss_decrease =  8.309452934119772e-05
epoch =  24
     loss =  -0.031492417954025284
     loss_decrease =  7.898558143725783e-06
epoch =  25
     loss =  -0.031492423776234936
     loss_decrease =  1.8487655220362128e-07
epoch =  26
     loss =  -0.03149242507905141
     loss_decrease =  4.136920301898884e-08
epoch =  27
     loss =  -0.03149242507905141
     loss_decrease =  0.0
epoch =  28
     loss =  -0.03149242507905141
     loss_decrease =  0.0
epoch =  29
     loss =  -0.03149242507905141
     loss_decrease =  0.0
epoch =  30
     loss =  -0.03149242507905141
     loss_decrease =  0.0
* Final training loss: -3.1492e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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.013737392169712176
     loss_decrease =  1.0137373921697121
epoch =  2
     loss =  -0.013737392169712176
     loss_decrease =  0.0
epoch =  3
     loss =  -0.013737392169712176
     loss_decrease =  0.0
epoch =  4
     loss =  -0.013737392169712176
     loss_decrease =  0.0
epoch =  5
     loss =  -0.013737392169712176
     loss_decrease =  0.0
epoch =  6
     loss =  -0.013737392169712176
     loss_decrease =  0.0
* Final training loss: -1.3737e-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.02642810075780263
     loss_decrease =  1.0264281007578027
epoch =  2
     loss =  -0.02653259274797934
     loss_decrease =  0.003953821393913805
epoch =  3
     loss =  -0.02653259274797934
     loss_decrease =  0.0
epoch =  4
     loss =  -0.02653259274797934
     loss_decrease =  0.0
epoch =  5
     loss =  -0.02653259274797934
     loss_decrease =  0.0
epoch =  6
     loss =  -0.02653259274797934
     loss_decrease =  0.0
epoch =  7
     loss =  -0.02653259274797934
     loss_decrease =  0.0
* Final training loss: -2.6533e-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.28993858398478
     loss_decrease =  0.71006141601522
epoch =  2
     loss =  -0.029972669655830755
     loss_decrease =  1.103375926183747
epoch =  3
     loss =  -0.030008098006719754
     loss_decrease =  0.0011820218651129354
epoch =  4
     loss =  -0.030008098006719754
     loss_decrease =  0.0
epoch =  5
     loss =  -0.030008098006719754
     loss_decrease =  0.0
epoch =  6
     loss =  -0.030008098006719754
     loss_decrease =  0.0
epoch =  7
     loss =  -0.030008098006719754
     loss_decrease =  0.0
epoch =  8
     loss =  -0.030008098006719754
     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.6288340579136511
     loss_decrease =  0.3711659420863489
epoch =  2
     loss =  0.3066434323896402
     loss_decrease =  0.5123619203975316
epoch =  3
     loss =  -0.0303123068363896
     loss_decrease =  1.0988519682295783
epoch =  4
     loss =  -0.03108590739871624
     loss_decrease =  0.025521005923506295
epoch =  5
     loss =  -0.03112009073734338
     loss_decrease =  0.001099641010593502
epoch =  6
     loss =  -0.03112009073734338
     loss_decrease =  0.0
epoch =  7
     loss =  -0.03112009073734338
     loss_decrease =  0.0
epoch =  8
     loss =  -0.03112009073734338
     loss_decrease =  0.0
epoch =  9
     loss =  -0.03112009073734338
     loss_decrease =  0.0
epoch =  10
     loss =  -0.03112009073734338
     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.299735414843696
     loss_decrease =  -0.2997354148436959
epoch =  2
     loss =  0.6372422737787344
     loss_decrease =  0.5097138490641434
epoch =  3
     loss =  0.4188182025066328
     loss_decrease =  0.3427645657857652
epoch =  4
     loss =  0.3067637344411117
     loss_decrease =  0.2675491833804585
epoch =  5
     loss =  -0.02926931167283999
     loss_decrease =  1.0954132069299694
epoch =  6
     loss =  -0.030610328472554023
     loss_decrease =  0.045816478867127156
epoch =  7
     loss =  -0.03113237280707191
     loss_decrease =  0.01705451592869924
epoch =  8
     loss =  -0.03137752352937967
     loss_decrease =  0.007874463145708919
epoch =  9
     loss =  -0.03141773869452104
     loss_decrease =  0.001281655166435121
epoch =  10
     loss =  -0.03141774202958806
     loss_decrease =  1.0615235722681734e-07
epoch =  11
     loss =  -0.03141774202958806
     loss_decrease =  0.0
epoch =  12
     loss =  -0.03141774202958806
     loss_decrease =  0.0
epoch =  13
     loss =  -0.03141774202958806
     loss_decrease =  0.0
epoch =  14
     loss =  -0.03141774202958806
     loss_decrease =  0.0
epoch =  15
     loss =  -0.03141774202958806
     loss_decrease =  0.0
* Final training loss: -3.1418e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.18

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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 =  2.7667093189605603
     loss_decrease =  -1.7667093189605603
epoch =  2
     loss =  1.3729149889032675
     loss_decrease =  0.5037733167360475
epoch =  3
     loss =  0.8802528972642755
     loss_decrease =  0.35884384366183353
epoch =  4
     loss =  0.6594251561294288
     loss_decrease =  0.25086851951428263
epoch =  5
     loss =  0.5295671326454663
     loss_decrease =  0.19692609885582613
epoch =  6
     loss =  0.43838708109579305
     loss_decrease =  0.1721784565710884
epoch =  7
     loss =  0.36664722825995344
     loss_decrease =  0.16364499760467066
epoch =  8
     loss =  0.3188624513229842
     loss_decrease =  0.13032902816079595
epoch =  9
     loss =  0.22992235923374982
     loss_decrease =  0.2789293368354137
epoch =  10
     loss =  -0.028783440910221253
     loss_decrease =  1.1251876546767625
epoch =  11
     loss =  -0.03012669905720116
     loss_decrease =  0.04666774035702259
epoch =  12
     loss =  -0.030568618039775286
     loss_decrease =  0.014668682477793536
epoch =  13
     loss =  -0.030922120588916226
     loss_decrease =  0.011564230632898388
epoch =  14
     loss =  -0.031148957850208013
     loss_decrease =  0.0073357601927564854
epoch =  15
     loss =  -0.03131110973626068
     loss_decrease =  0.005205692172188841
epoch =  16
     loss =  -0.03143344168305327
     loss_decrease =  0.0039069821486053
epoch =  17
     loss =  -0.0314753692309693
     loss_decrease =  0.0013338516456069007
epoch =  18
     loss =  -0.03149135771458797
     loss_decrease =  0.0005079681036096005
epoch =  19
     loss =  -0.031492077397731334
     loss_decrease =  2.28533539229123e-05
epoch =  20
     loss =  -0.03149217101356766
     loss_decrease =  2.97267897394231e-06
epoch =  21
     loss =  -0.0314922111286827
     loss_decrease =  1.273812307985311e-06
epoch =  22
     loss =  -0.031492235453265224
     loss_decrease =  7.72399957006323e-07
epoch =  23
     loss =  -0.03149223669506062
     loss_decrease =  3.94317957365002e-08
epoch =  24
     loss =  -0.03149223669506062
     loss_decrease =  0.0
epoch =  25
     loss =  -0.03149223669506062
     loss_decrease =  0.0
epoch =  26
     loss =  -0.03149223669506062
     loss_decrease =  0.0
epoch =  27
     loss =  -0.03149223669506062
     loss_decrease =  0.0
* Final training loss: -3.1492e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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.022257131067019736
     loss_decrease =  1.0222571310670197
epoch =  2
     loss =  -0.02563281323462354
     loss_decrease =  0.15166744345617103
epoch =  3
     loss =  -0.02697316784918917
     loss_decrease =  0.05229057779561802
epoch =  4
     loss =  -0.02704168546296438
     loss_decrease =  0.00254021382131693
Correction
epoch =  5
     loss =  0.32165129261631964
     loss_decrease =  -12.894646620930683
Correction
epoch =  6
     loss =  3495.8059102897623
     loss_decrease =  -10867.309845282416
Correction
epoch =  7
     loss =  5595256.999153065
     loss_decrease =  -1599.5628294991016
Correction
epoch =  8
     loss =  13643551459087.467
     loss_decrease =  -2438412.724544314
Correction
epoch =  9
     loss =  8.101885797373431e+25
     loss_decrease =  -5938252823443.342
Correction
epoch =  10
     loss =  2.8569532141001988e+51
     loss_decrease =  -3.5262817639646327e+25
Correction
epoch =  11
     loss =  3.5525250649409706e+102
     loss_decrease =  -1.2434663078862645e+51
Correction
epoch =  12
     loss =  5.492944305682325e+204
     loss_decrease =  -1.5462084588482974e+102
Correction
epoch =  13
     loss =  inf
     loss_decrease =  -inf
epoch =  14
     loss =  nan
     loss_decrease =  nan
epoch =  15
     loss =  nan
     loss_decrease =  nan
epoch =  16
     loss =  nan
     loss_decrease =  nan
epoch =  17
     loss =  nan
     loss_decrease =  nan
epoch =  18
     loss =  nan
     loss_decrease =  nan
epoch =  19
     loss =  nan
     loss_decrease =  nan
epoch =  20
     loss =  nan
     loss_decrease =  nan
epoch =  21
     loss =  nan
     loss_decrease =  nan
epoch =  22
     loss =  nan
     loss_decrease =  nan
epoch =  23
     loss =  nan
     loss_decrease =  nan
epoch =  24
     loss =  nan
     loss_decrease =  nan
epoch =  25
     loss =  nan
     loss_decrease =  nan
epoch =  26
     loss =  nan
     loss_decrease =  nan
epoch =  27
     loss =  nan
     loss_decrease =  nan
epoch =  28
     loss =  nan
     loss_decrease =  nan
epoch =  29
     loss =  nan
     loss_decrease =  nan
epoch =  30
     loss =  nan
     loss_decrease =  nan
epoch =  31
     loss =  nan
     loss_decrease =  nan
epoch =  32
     loss =  nan
     loss_decrease =  nan
epoch =  33
     loss =  nan
     loss_decrease =  nan
epoch =  34
     loss =  nan
     loss_decrease =  nan
epoch =  35
     loss =  nan
     loss_decrease =  nan
epoch =  36
     loss =  nan
     loss_decrease =  nan
epoch =  37
     loss =  nan
     loss_decrease =  nan
epoch =  38
     loss =  nan
     loss_decrease =  nan
epoch =  39
     loss =  nan
     loss_decrease =  nan
epoch =  40
     loss =  nan
     loss_decrease =  nan
epoch =  41
     loss =  nan
     loss_decrease =  nan
epoch =  42
     loss =  nan
     loss_decrease =  nan
epoch =  43
     loss =  nan
     loss_decrease =  nan
epoch =  44
     loss =  nan
     loss_decrease =  nan
epoch =  45
     loss =  nan
     loss_decrease =  nan
epoch =  46
     loss =  nan
     loss_decrease =  nan
epoch =  47
     loss =  nan
     loss_decrease =  nan
epoch =  48
     loss =  nan
     loss_decrease =  nan
epoch =  49
     loss =  nan
     loss_decrease =  nan
epoch =  50
     loss =  nan
     loss_decrease =  nan
epoch =  51
     loss =  nan
     loss_decrease =  nan
epoch =  52
     loss =  nan
     loss_decrease =  nan
epoch =  53
     loss =  nan
     loss_decrease =  nan
epoch =  54
     loss =  nan
     loss_decrease =  nan
epoch =  55
     loss =  nan
     loss_decrease =  nan
epoch =  56
     loss =  nan
     loss_decrease =  nan
epoch =  57
     loss =  nan
     loss_decrease =  nan
epoch =  58
     loss =  nan
     loss_decrease =  nan
epoch =  59
     loss =  nan
     loss_decrease =  nan
epoch =  60
     loss =  nan
     loss_decrease =  nan
epoch =  61
     loss =  nan
     loss_decrease =  nan
epoch =  62
     loss =  nan
     loss_decrease =  nan
epoch =  63
     loss =  nan
     loss_decrease =  nan
epoch =  64
     loss =  nan
     loss_decrease =  nan
epoch =  65
     loss =  nan
     loss_decrease =  nan
epoch =  66
     loss =  nan
     loss_decrease =  nan
epoch =  67
     loss =  nan
     loss_decrease =  nan
epoch =  68
     loss =  nan
     loss_decrease =  nan
epoch =  69
     loss =  nan
     loss_decrease =  nan
epoch =  70
     loss =  nan
     loss_decrease =  nan
epoch =  71
     loss =  nan
     loss_decrease =  nan
epoch =  72
     loss =  nan
     loss_decrease =  nan
epoch =  73
     loss =  nan
     loss_decrease =  nan
epoch =  74
     loss =  nan
     loss_decrease =  nan
epoch =  75
     loss =  nan
     loss_decrease =  nan
epoch =  76
     loss =  nan
     loss_decrease =  nan
epoch =  77
     loss =  nan
     loss_decrease =  nan
epoch =  78
     loss =  nan
     loss_decrease =  nan
epoch =  79
     loss =  nan
     loss_decrease =  nan
epoch =  80
     loss =  nan
     loss_decrease =  nan
epoch =  81
     loss =  nan
     loss_decrease =  nan
epoch =  82
     loss =  nan
     loss_decrease =  nan
epoch =  83
     loss =  nan
     loss_decrease =  nan
epoch =  84
     loss =  nan
     loss_decrease =  nan
epoch =  85
     loss =  nan
     loss_decrease =  nan
epoch =  86
     loss =  nan
     loss_decrease =  nan
epoch =  87
     loss =  nan
     loss_decrease =  nan
epoch =  88
     loss =  nan
     loss_decrease =  nan
epoch =  89
     loss =  nan
     loss_decrease =  nan
epoch =  90
     loss =  nan
     loss_decrease =  nan
epoch =  91
     loss =  nan
     loss_decrease =  nan
epoch =  92
     loss =  nan
     loss_decrease =  nan
epoch =  93
     loss =  nan
     loss_decrease =  nan
epoch =  94
     loss =  nan
     loss_decrease =  nan
epoch =  95
     loss =  nan
     loss_decrease =  nan
epoch =  96
     loss =  nan
     loss_decrease =  nan
epoch =  97
     loss =  nan
     loss_decrease =  nan
epoch =  98
     loss =  nan
     loss_decrease =  nan
epoch =  99
     loss =  nan
     loss_decrease =  nan
epoch =  100
     loss =  nan
     loss_decrease =  nan
* Final training loss: nan

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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.02643125063247561
     loss_decrease =  1.0264312506324755
epoch =  2
     loss =  -0.02753300342225591
     loss_decrease =  0.0416837176984201
epoch =  3
     loss =  -0.02760195503396842
     loss_decrease =  0.002504325832348973
epoch =  4
     loss =  -0.027910656216967207
     loss_decrease =  0.011184033254850383
epoch =  5
     loss =  -0.027959865904850868
     loss_decrease =  0.0017631146864166552
epoch =  6
     loss =  -0.02796470577483168
     loss_decrease =  0.00017310061490577228
epoch =  7
     loss =  -0.02796470577483168
     loss_decrease =  0.0
epoch =  8
     loss =  -0.02796470577483168
     loss_decrease =  0.0
epoch =  9
     loss =  -0.02796470577483168
     loss_decrease =  0.0
epoch =  10
     loss =  -0.02796470577483168
     loss_decrease =  0.0
epoch =  11
     loss =  -0.02796470577483168
     loss_decrease =  0.0
* Final training loss: -2.7965e-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.3033075188850817
     loss_decrease =  0.6966924811149183
epoch =  2
     loss =  -0.029974611988948227
     loss_decrease =  1.0988258124926509
epoch =  3
     loss =  -0.03042408652882254
     loss_decrease =  0.014995174584412869
epoch =  4
     loss =  -0.030641416273674976
     loss_decrease =  0.007143344949618983
epoch =  5
     loss =  -0.03065249924646187
     loss_decrease =  0.0003616991031976866
epoch =  6
     loss =  -0.03065249924646187
     loss_decrease =  0.0
epoch =  7
     loss =  -0.03065249924646187
     loss_decrease =  0.0
epoch =  8
     loss =  -0.03065249924646187
     loss_decrease =  0.0
epoch =  9
     loss =  -0.03065249924646187
     loss_decrease =  0.0
epoch =  10
     loss =  -0.03065249924646187
     loss_decrease =  0.0
* Final training loss: -3.0652e-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.6366845774063419
     loss_decrease =  0.3633154225936581
epoch =  2
     loss =  0.3115845372667018
     loss_decrease =  0.5106139706791676
epoch =  3
     loss =  -0.03016551262865305
     loss_decrease =  1.0968132529722832
epoch =  4
     loss =  -0.031075328489223675
     loss_decrease =  0.030160795600285083
epoch =  5
     loss =  -0.031124189372408
     loss_decrease =  0.0015723368202292555
epoch =  6
     loss =  -0.031124189372408
     loss_decrease =  0.0
epoch =  7
     loss =  -0.031124189372408
     loss_decrease =  0.0
epoch =  8
     loss =  -0.031124189372408
     loss_decrease =  0.0
epoch =  9
     loss =  -0.031124189372408
     loss_decrease =  0.0
epoch =  10
     loss =  -0.031124189372408
     loss_decrease =  0.0
* Final training loss: -3.1124e-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.3435185706700832
     loss_decrease =  -0.3435185706700832
epoch =  2
     loss =  0.6612229760879144
     loss_decrease =  0.5078423249794547
epoch =  3
     loss =  0.4334164469513063
     loss_decrease =  0.3445230086897639
epoch =  4
     loss =  0.31578318743141115
     loss_decrease =  0.2714093116385846
epoch =  5
     loss =  -0.028201671256340426
     loss_decrease =  1.0893070701000063
epoch =  6
     loss =  -0.030476749610297907
     loss_decrease =  0.08067175641039316
epoch =  7
     loss =  -0.031079227819612865
     loss_decrease =  0.019768453559476176
epoch =  8
     loss =  -0.03134915502569923
     loss_decrease =  0.008685132322239553
epoch =  9
     loss =  -0.031416544609877986
     loss_decrease =  0.002149645951334598
epoch =  10
     loss =  -0.031418450373165444
     loss_decrease =  6.066113607090632e-05
epoch =  11
     loss =  -0.031418450373165444
     loss_decrease =  0.0
epoch =  12
     loss =  -0.031418450373165444
     loss_decrease =  0.0
epoch =  13
     loss =  -0.031418450373165444
     loss_decrease =  0.0
epoch =  14
     loss =  -0.031418450373165444
     loss_decrease =  0.0
epoch =  15
     loss =  -0.031418450373165444
     loss_decrease =  0.0
* Final training loss: -3.1418e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.18

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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)
Correction
epoch =  1
     loss =  10.449699028993122
     loss_decrease =  -9.449699028993122
Correction
epoch =  2
     loss =  2.775509488644647
     loss_decrease =  0.7343933561202212
Correction
epoch =  3
     loss =  1.497329672816278
     loss_decrease =  0.46052078764556387
Correction
epoch =  4
     loss =  0.992106655193255
     loss_decrease =  0.33741601919420033
epoch =  5
     loss =  0.7604470531631862
     loss_decrease =  0.2335027195084618
Correction
epoch =  6
     loss =  0.6739926078741886
     loss_decrease =  0.11368897404412076
epoch =  7
     loss =  0.508352757433324
     loss_decrease =  0.2457591500347492
epoch =  8
     loss =  0.4252366582476938
     loss_decrease =  0.16350083277856867
epoch =  9
     loss =  0.36224872683090853
     loss_decrease =  0.14812441541692242
epoch =  10
     loss =  0.3174446016600615
     loss_decrease =  0.12368331991891535
Correction
epoch =  11
     loss =  0.29793316980593076
     loss_decrease =  0.06146405310437357
epoch =  12
     loss =  0.14723126797580466
     loss_decrease =  0.5058245173851944
Correction
Correction
epoch =  13
     loss =  -0.018485087136716555
     loss_decrease =  1.1255513682036231
epoch =  14
     loss =  -0.027976763242416658
     loss_decrease =  0.5134774878527338
epoch =  15
     loss =  -0.029521310739462424
     loss_decrease =  0.055208227044078406
epoch =  16
     loss =  -0.030346227575707332
     loss_decrease =  0.02794309654896882
epoch =  17
     loss =  -0.030875335549333714
     loss_decrease =  0.0174357083530851
epoch =  18
     loss =  -0.031022755563551222
     loss_decrease =  0.004774685411336015
epoch =  19
     loss =  -0.031178898040804696
     loss_decrease =  0.005033159512010817
epoch =  20
     loss =  -0.031308757264986345
     loss_decrease =  0.004164971578267393
epoch =  21
     loss =  -0.03144391700090075
     loss_decrease =  0.004316994595807716
epoch =  22
     loss =  -0.03148899458309492
     loss_decrease =  0.0014335867313503292
epoch =  23
     loss =  -0.031492085709692426
     loss_decrease =  9.816529992248404e-05
epoch =  24
     loss =  -0.031492399386716115
     loss_decrease =  9.960503301702718e-06
epoch =  25
     loss =  -0.03149243541528023
     loss_decrease =  1.1440399848801345e-06
epoch =  26
     loss =  -0.03149243879390022
     loss_decrease =  1.0728354105979613e-07
epoch =  27
     loss =  -0.03149243879390022
     loss_decrease =  0.0
epoch =  28
     loss =  -0.03149243879390022
     loss_decrease =  0.0
epoch =  29
     loss =  -0.03149243879390022
     loss_decrease =  0.0
epoch =  30
     loss =  -0.03149243879390022
     loss_decrease =  0.0
epoch =  31
     loss =  -0.03149243879390022
     loss_decrease =  0.0
* Final training loss: -3.1492e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.18

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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 =  2.766709318960562
     loss_decrease =  -1.766709318960562
epoch =  2
     loss =  1.3729149889033176
     loss_decrease =  0.5037733167360298
epoch =  3
     loss =  0.8802528972628966
     loss_decrease =  0.3588438436628613
epoch =  4
     loss =  0.6594251559809964
     loss_decrease =  0.25086851968173385
epoch =  5
     loss =  0.5295671333904348
     loss_decrease =  0.1969260975453352
epoch =  6
     loss =  0.43838714773049064
     loss_decrease =  0.17217833190701387
epoch =  7
     loss =  0.36664922864435767
     loss_decrease =  0.163640561675945
epoch =  8
     loss =  0.31895231558037884
     loss_decrease =  0.1300886769633542
epoch =  9
     loss =  0.2332277781823991
     loss_decrease =  0.268769133222914
epoch =  10
     loss =  -0.028768324105347794
     loss_decrease =  1.123348617945711
epoch =  11
     loss =  -0.03012031946529313
     loss_decrease =  0.046995972201731795
epoch =  12
     loss =  -0.030553141054455387
     loss_decrease =  0.014369754267081605
epoch =  13
     loss =  -0.030920478124826574
     loss_decrease =  0.012022890534118104
epoch =  14
     loss =  -0.031154265859898344
     loss_decrease =  0.007560935316975512
epoch =  15
     loss =  -0.031305841635716286
     loss_decrease =  0.004865329727222041
epoch =  16
     loss =  -0.031432307685571044
     loss_decrease =  0.004039694933819476
epoch =  17
     loss =  -0.03147364604429449
     loss_decrease =  0.001315155067103933
epoch =  18
     loss =  -0.03149083399551651
     loss_decrease =  0.0005461061358391769
epoch =  19
     loss =  -0.03149211636721903
     loss_decrease =  4.072206225776206e-05
epoch =  20
     loss =  -0.03149221793807548
     loss_decrease =  3.2252788371017046e-06
epoch =  21
     loss =  -0.03149222473486055
     loss_decrease =  2.1582427375189892e-07
epoch =  22
     loss =  -0.031492228085616
     loss_decrease =  1.0639945189939058e-07
epoch =  23
     loss =  -0.031492228085616
     loss_decrease =  0.0
epoch =  24
     loss =  -0.031492228085616
     loss_decrease =  0.0
epoch =  25
     loss =  -0.031492228085616
     loss_decrease =  0.0
epoch =  26
     loss =  -0.031492228085616
     loss_decrease =  0.0
epoch =  27
     loss =  -0.031492228085616
     loss_decrease =  0.0
* Final training loss: -3.1492e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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.022671525914665792
     loss_decrease =  1.0226715259146657
epoch =  2
     loss =  -0.025088205102115888
     loss_decrease =  0.10659534768618242
epoch =  3
     loss =  -0.026846742129146492
     loss_decrease =  0.07009417452834411
epoch =  4
     loss =  -0.02705297878480696
     loss_decrease =  0.0076819993527842455
epoch =  5
     loss =  -0.027062775334064725
     loss_decrease =  0.00036212460504591313
Correction
epoch =  6
     loss =  2031.2315484752376
     loss_decrease =  -75057.29128578198
Correction
epoch =  7
     loss =  3814460.8675209014
     loss_decrease =  -1876.9054856568475
Correction
epoch =  8
     loss =  12883551333034.13
     loss_decrease =  -3377553.9888934693
Correction
epoch =  9
     loss =  1.4682271527489734e+26
     loss_decrease =  -11396136940784.562
Correction
epoch =  10
     loss =  1.9068139755301408e+52
     loss_decrease =  -1.2987186430655487e+26
Correction
epoch =  11
     loss =  3.216166145189472e+104
     loss_decrease =  -1.686670113845426e+52
Correction
epoch =  12
     loss =  9.149529789724187e+208
     loss_decrease =  -2.8448560729393433e+104
Correction
epoch =  13
     loss =  inf
     loss_decrease =  -inf
epoch =  14
     loss =  nan
     loss_decrease =  nan
epoch =  15
     loss =  nan
     loss_decrease =  nan
epoch =  16
     loss =  nan
     loss_decrease =  nan
epoch =  17
     loss =  nan
     loss_decrease =  nan
epoch =  18
     loss =  nan
     loss_decrease =  nan
epoch =  19
     loss =  nan
     loss_decrease =  nan
epoch =  20
     loss =  nan
     loss_decrease =  nan
epoch =  21
     loss =  nan
     loss_decrease =  nan
epoch =  22
     loss =  nan
     loss_decrease =  nan
epoch =  23
     loss =  nan
     loss_decrease =  nan
epoch =  24
     loss =  nan
     loss_decrease =  nan
epoch =  25
     loss =  nan
     loss_decrease =  nan
epoch =  26
     loss =  nan
     loss_decrease =  nan
epoch =  27
     loss =  nan
     loss_decrease =  nan
epoch =  28
     loss =  nan
     loss_decrease =  nan
epoch =  29
     loss =  nan
     loss_decrease =  nan
epoch =  30
     loss =  nan
     loss_decrease =  nan
epoch =  31
     loss =  nan
     loss_decrease =  nan
epoch =  32
     loss =  nan
     loss_decrease =  nan
epoch =  33
     loss =  nan
     loss_decrease =  nan
epoch =  34
     loss =  nan
     loss_decrease =  nan
epoch =  35
     loss =  nan
     loss_decrease =  nan
epoch =  36
     loss =  nan
     loss_decrease =  nan
epoch =  37
     loss =  nan
     loss_decrease =  nan
epoch =  38
     loss =  nan
     loss_decrease =  nan
epoch =  39
     loss =  nan
     loss_decrease =  nan
epoch =  40
     loss =  nan
     loss_decrease =  nan
epoch =  41
     loss =  nan
     loss_decrease =  nan
epoch =  42
     loss =  nan
     loss_decrease =  nan
epoch =  43
     loss =  nan
     loss_decrease =  nan
epoch =  44
     loss =  nan
     loss_decrease =  nan
epoch =  45
     loss =  nan
     loss_decrease =  nan
epoch =  46
     loss =  nan
     loss_decrease =  nan
epoch =  47
     loss =  nan
     loss_decrease =  nan
epoch =  48
     loss =  nan
     loss_decrease =  nan
epoch =  49
     loss =  nan
     loss_decrease =  nan
epoch =  50
     loss =  nan
     loss_decrease =  nan
epoch =  51
     loss =  nan
     loss_decrease =  nan
epoch =  52
     loss =  nan
     loss_decrease =  nan
epoch =  53
     loss =  nan
     loss_decrease =  nan
epoch =  54
     loss =  nan
     loss_decrease =  nan
epoch =  55
     loss =  nan
     loss_decrease =  nan
epoch =  56
     loss =  nan
     loss_decrease =  nan
epoch =  57
     loss =  nan
     loss_decrease =  nan
epoch =  58
     loss =  nan
     loss_decrease =  nan
epoch =  59
     loss =  nan
     loss_decrease =  nan
epoch =  60
     loss =  nan
     loss_decrease =  nan
epoch =  61
     loss =  nan
     loss_decrease =  nan
epoch =  62
     loss =  nan
     loss_decrease =  nan
epoch =  63
     loss =  nan
     loss_decrease =  nan
epoch =  64
     loss =  nan
     loss_decrease =  nan
epoch =  65
     loss =  nan
     loss_decrease =  nan
epoch =  66
     loss =  nan
     loss_decrease =  nan
epoch =  67
     loss =  nan
     loss_decrease =  nan
epoch =  68
     loss =  nan
     loss_decrease =  nan
epoch =  69
     loss =  nan
     loss_decrease =  nan
epoch =  70
     loss =  nan
     loss_decrease =  nan
epoch =  71
     loss =  nan
     loss_decrease =  nan
epoch =  72
     loss =  nan
     loss_decrease =  nan
epoch =  73
     loss =  nan
     loss_decrease =  nan
epoch =  74
     loss =  nan
     loss_decrease =  nan
epoch =  75
     loss =  nan
     loss_decrease =  nan
epoch =  76
     loss =  nan
     loss_decrease =  nan
epoch =  77
     loss =  nan
     loss_decrease =  nan
epoch =  78
     loss =  nan
     loss_decrease =  nan
epoch =  79
     loss =  nan
     loss_decrease =  nan
epoch =  80
     loss =  nan
     loss_decrease =  nan
epoch =  81
     loss =  nan
     loss_decrease =  nan
epoch =  82
     loss =  nan
     loss_decrease =  nan
epoch =  83
     loss =  nan
     loss_decrease =  nan
epoch =  84
     loss =  nan
     loss_decrease =  nan
epoch =  85
     loss =  nan
     loss_decrease =  nan
epoch =  86
     loss =  nan
     loss_decrease =  nan
epoch =  87
     loss =  nan
     loss_decrease =  nan
epoch =  88
     loss =  nan
     loss_decrease =  nan
epoch =  89
     loss =  nan
     loss_decrease =  nan
epoch =  90
     loss =  nan
     loss_decrease =  nan
epoch =  91
     loss =  nan
     loss_decrease =  nan
epoch =  92
     loss =  nan
     loss_decrease =  nan
epoch =  93
     loss =  nan
     loss_decrease =  nan
epoch =  94
     loss =  nan
     loss_decrease =  nan
epoch =  95
     loss =  nan
     loss_decrease =  nan
epoch =  96
     loss =  nan
     loss_decrease =  nan
epoch =  97
     loss =  nan
     loss_decrease =  nan
epoch =  98
     loss =  nan
     loss_decrease =  nan
epoch =  99
     loss =  nan
     loss_decrease =  nan
epoch =  100
     loss =  nan
     loss_decrease =  nan
* Final training loss: nan

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  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.026430722517324104
     loss_decrease =  1.0264307225173241
epoch =  2
     loss =  -0.02752720718041627
     loss_decrease =  0.041485232285022544
epoch =  3
     loss =  -0.027594256336286982
     loss_decrease =  0.002435741316991019
epoch =  4
     loss =  -0.027895953202603668
     loss_decrease =  0.01093332114625421
epoch =  5
     loss =  -0.027944708509471453
     loss_decrease =  0.0017477555440993176
epoch =  6
     loss =  -0.02794873681817133
     loss_decrease =  0.00014415282587444038
epoch =  7
     loss =  -0.02794873681817133
     loss_decrease =  0.0
epoch =  8
     loss =  -0.02794873681817133
     loss_decrease =  0.0
epoch =  9
     loss =  -0.02794873681817133
     loss_decrease =  0.0
epoch =  10
     loss =  -0.02794873681817133
     loss_decrease =  0.0
epoch =  11
     loss =  -0.02794873681817133
     loss_decrease =  0.0
* Final training loss: -2.7949e-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.3033075158984128
     loss_decrease =  0.6966924841015871
epoch =  2
     loss =  -0.029974610323496527
     loss_decrease =  1.098825807974821
epoch =  3
     loss =  -0.03042404820867362
     loss_decrease =  0.014993952559402782
epoch =  4
     loss =  -0.030641226429513838
     loss_decrease =  0.007138373544198632
epoch =  5
     loss =  -0.030652300341560308
     loss_decrease =  0.0003614056399453862
epoch =  6
     loss =  -0.030652300341560308
     loss_decrease =  0.0
epoch =  7
     loss =  -0.030652300341560308
     loss_decrease =  0.0
epoch =  8
     loss =  -0.030652300341560308
     loss_decrease =  0.0
epoch =  9
     loss =  -0.030652300341560308
     loss_decrease =  0.0
epoch =  10
     loss =  -0.030652300341560308
     loss_decrease =  0.0
* Final training loss: -3.0652e-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.636684577413208
     loss_decrease =  0.36331542258679195
epoch =  2
     loss =  0.31158453722248525
     loss_decrease =  0.5106139707538934
epoch =  3
     loss =  -0.03016551257831368
     loss_decrease =  1.0968132528244627
epoch =  4
     loss =  -0.03107532862201797
     loss_decrease =  0.030160801721578163
epoch =  5
     loss =  -0.031124189370184466
     loss_decrease =  0.001572332468654112
epoch =  6
     loss =  -0.031124189370184466
     loss_decrease =  0.0
epoch =  7
     loss =  -0.031124189370184466
     loss_decrease =  0.0
epoch =  8
     loss =  -0.031124189370184466
     loss_decrease =  0.0
epoch =  9
     loss =  -0.031124189370184466
     loss_decrease =  0.0
epoch =  10
     loss =  -0.031124189370184466
     loss_decrease =  0.0
* Final training loss: -3.1124e-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.3435185706721908
     loss_decrease =  -0.3435185706721908
epoch =  2
     loss =  0.6612229759474972
     loss_decrease =  0.5078423250847413
epoch =  3
     loss =  0.43341643737071767
     loss_decrease =  0.34452302303976196
epoch =  4
     loss =  0.31578354934626374
     loss_decrease =  0.27140846050524386
epoch =  5
     loss =  -0.0282040433645704
     loss_decrease =  1.089314479563481
epoch =  6
     loss =  -0.030485651005482554
     loss_decrease =  0.08089647329709769
epoch =  7
     loss =  -0.031078544736673167
     loss_decrease =  0.01944828834667122
epoch =  8
     loss =  -0.03135659992144453
     loss_decrease =  0.008946853436263207
epoch =  9
     loss =  -0.03141785737013723
     loss_decrease =  0.001953574330321531
epoch =  10
     loss =  -0.031418444964606405
     loss_decrease =  1.87025633943155e-05
epoch =  11
     loss =  -0.031418444964606405
     loss_decrease =  0.0
epoch =  12
     loss =  -0.031418444964606405
     loss_decrease =  0.0
epoch =  13
     loss =  -0.031418444964606405
     loss_decrease =  0.0
epoch =  14
     loss =  -0.031418444964606405
     loss_decrease =  0.0
epoch =  15
     loss =  -0.031418444964606405
     loss_decrease =  0.0
* Final training loss: -3.1418e-02

 
 
   _   _            ____   ___  __  __ 
  | \ | | ___ _   _|  _ \ / _ \|  \/  |
  |  \| |/ _ \ | | | |_) | | | | |\/| |
  | |\  |  __/ |_| |  _ <| |_| | |  | |
  |_| \_|\___|\__,_|_| \_\ ___/|_|  |_|

                  2024.09.18

************ MESH READING COMPLETE ************

 * Dimension of the problem: 1D
 * Elements type:            2-node bar
 * Number of Dofs:           324
Gaussian_quad


mesh.NNodes =  324
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)
Correction
epoch =  1
     loss =  10.449699030411479
     loss_decrease =  -9.449699030411479
Correction
epoch =  2
     loss =  2.775509452462695
     loss_decrease =  0.73439335961876
Correction
epoch =  3
     loss =  1.4973347291427388
     loss_decrease =  0.4605189588476589
Correction
epoch =  4
     loss =  0.9969477118173787
     loss_decrease =  0.3341851408280926
Correction
epoch =  5
     loss =  0.7379935031537179
     loss_decrease =  0.2597470314582518
Correction
epoch =  6
     loss =  0.591980024667901
     loss_decrease =  0.1978519836039851
epoch =  7
     loss =  0.48275572974321074
     loss_decrease =  0.1845067238306981
epoch =  8
     loss =  0.3992822353860188
     loss_decrease =  0.17291041662331685
epoch =  9
     loss =  0.34841915431453485
     loss_decrease =  0.12738628609988234
epoch =  10
     loss =  0.31134558378224675
     loss_decrease =  0.10640508730131408
Correction
epoch =  11
     loss =  0.28428123120130816
     loss_decrease =  0.08692704824060468
Correction
epoch =  12
     loss =  0.07085407567778784
     loss_decrease =  0.750760627501244
Correction
epoch =  13
     loss =  -0.022302529147844204
     loss_decrease =  1.3147670608147648
epoch =  14
     loss =  -0.029496853185116037
     loss_decrease =  0.32257884249720836
epoch =  15
     loss =  -0.030211545943087673
     loss_decrease =  0.024229457748810527
epoch =  16
     loss =  -0.030620784143166366
     loss_decrease =  0.013545755018614833
epoch =  17
     loss =  -0.03092947328499525
     loss_decrease =  0.010081033208869439
epoch =  18
     loss =  -0.03112267589030039
     loss_decrease =  0.006246553361090399
epoch =  19
     loss =  -0.031257205295940164
     loss_decrease =  0.004322552665906859
epoch =  20
     loss =  -0.03135836373924317
     loss_decrease =  0.003236323988189097
epoch =  21
     loss =  -0.031410216829703935
     loss_decrease =  0.0016535649274288262
epoch =  22
     loss =  -0.03143242865019042
     loss_decrease =  0.0007071527269904179
epoch =  23
     loss =  -0.03145062322361812
     loss_decrease =  0.0005788472036375746
epoch =  24
     loss =  -0.03147600639123593
     loss_decrease =  0.0008070799563281985
epoch =  25
     loss =  -0.03148802585952952
     loss_decrease =  0.0003818612864728965
Correction
epoch =  26
     loss =  -0.03149009449988005
     loss_decrease =  6.56960953906355e-05
epoch =  27
     loss =  -0.031491471581013224
     loss_decrease =  4.373061291317066e-05
epoch =  28
     loss =  -0.031492137092688936
     loss_decrease =  2.1133076426757188e-05
epoch =  29
     loss =  -0.03149240676949992
     loss_decrease =  8.563306141868425e-06
epoch =  30
     loss =  -0.03149240906415443
     loss_decrease =  7.28637390234333e-08
epoch =  31
     loss =  -0.03149240906415443
     loss_decrease =  0.0
epoch =  32
     loss =  -0.03149240906415443
     loss_decrease =  0.0
epoch =  33
     loss =  -0.03149240906415443
     loss_decrease =  0.0
epoch =  34
     loss =  -0.03149240906415443
     loss_decrease =  0.0
* Final training loss: -3.1492e-02
import matplotlib.pyplot as plt
import matplotlib
plt.rcParams['text.usetex'] = False

# Plot normalized displacement error

print("Fixed : ", loss_grad[0,:,0])
print("Fixed : ", loss_grad[0,:,1])
print("Fixed : ", loss_grad[0,:,2])
print()
print("Adapt : ", loss_u[1,:,0])
print("Adapt : ", loss_u[1,:,1])
print("Adapt : ", loss_u[1,:,2])

print()

fig = matplotlib.pyplot.gcf()
ax = plt.gca()

plt.plot(mesh_resolution, loss_u[0,:,0],'-', color = "orange", label = 'G.q.(3)')
plt.plot(mesh_resolution, loss_u[0,:,1],'-', color = "maroon", label = 'G.q.(4)')
plt.plot(mesh_resolution, loss_u[0,:,2],'-', color = "red", label = 'G.q.(5)')

plt.plot(mesh_resolution, loss_u[1,:,0],':', color = "orange", label = 'G.q.(3),  r-adaptivity')
plt.plot(mesh_resolution, loss_u[1,:,1],':', color = "maroon", label = 'G.q.(4),  r-adaptivity')
plt.plot(mesh_resolution, loss_u[1,:,2],':', color = "red", label = 'G.q.(5).,  r-adaptivity')

ax.set_xscale('log')
ax.set_yscale('log')
ax.set_ylim([0.00008, 29])

plt.xlabel("Number of mesh nodes")
plt.ylabel("Normalized displacement error")
plt.legend(loc="lower left", frameon=False )
plt.show()

# Plot normalized strain error

fig = matplotlib.pyplot.gcf()
ax = plt.gca()

plt.plot(mesh_resolution, loss_grad[0,:,0],'-', color = "orange", label = 'G.q.(3)')
plt.plot(mesh_resolution, loss_grad[0,:,1],'-', color = "maroon", label = 'G.q.(4)')
plt.plot(mesh_resolution, loss_grad[0,:,2],'-', color = "red", label = 'G.q.(5)')

plt.plot(mesh_resolution, loss_grad[1,:,0],':', color = "orange", label = 'G.q.(3).,  r-adaptivity')
plt.plot(mesh_resolution, loss_grad[1,:,1],':', color = "maroon", label = 'G.q.(4),  r-adaptivity')
plt.plot(mesh_resolution, loss_grad[1,:,2],':', color = "red", label = 'G.q.(5),  r-adaptivity')

ax.set_xscale('log')
ax.set_yscale('log')
ax.set_ylim([0.01, 23])

plt.xlabel("Number of mesh nodes")
plt.ylabel("Normalized strain error")
plt.legend(loc="lower left", frameon=False )
plt.show()
Fixed :  [0.74538078 0.39509747 0.21741465 0.11137825 0.05548029 0.02732404]
Fixed :  [0.744659   0.39509584 0.21741463 0.11137785 0.05548063 0.02732191]
Fixed :  [0.74467163 0.39509585 0.21741463 0.11137784 0.05548108 0.02732794]

Adapt :  [       nan 0.06747639 0.01315608 0.00487374 0.0013304  0.00062885]
Adapt :  [       nan 0.05637289 0.01308851 0.0048737  0.00122884 0.00038636]
Adapt :  [       nan 0.05694514 0.01308796 0.0048737  0.00127661 0.00169349]
../_images/6705421194074fb69e49cf972e8407b2bccfb89969b4929f5963d1550e138831.svg ../_images/81826cdf4b0e3d68013ebaa73d34f5173696f3aa88310373c0623295db591dee.svg