diff --git a/parser/parser-elastic/parser_elastic.py b/parser/parser-elastic/parser_elastic.py
index aec2eb2dfb694e7f144e9466d6f471ed76ef5b65..5dc30eb10c31f088150ce269d675142bab343c63 100644
--- a/parser/parser-elastic/parser_elastic.py
+++ b/parser/parser-elastic/parser_elastic.py
@@ -20,13 +20,23 @@ from nomadcore.parser_backend import JsonParseEventsWriterBackend
 from nomadcore.simple_parser import mainFunction
 from nomadcore.simple_parser import SimpleMatcher as SM
 from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
+from nomadcore.unit_conversion import unit_conversion
 import os, sys, json, elastic_parser_input_exciting, elastic_parser_input_wien2k
+from ase import Atoms
 #from pathlib import Path
 
+def is_number(s):
+    try:
+        float(s)
+        return True
+    except ValueError:
+        return False
+
 class SampleContext(object):
 
     def __init__(self): 
 #        self.mainFileUri = sys.argv[1]  #exciting !!!!!!LOCAL HOME!!!!!!!!             OKOKOKOK
+#        print("self.mainFileUri===init==",self.mainFileUri)
         self.mainFileUri = sys.argv[2]  #exciting !!! FOR NOMAD URI nmd:// or sbt -> zip file!!!!!!!!   OKOKKOOK
         self.parser = None
         self.mainFilePath = None
@@ -36,6 +46,7 @@ class SampleContext(object):
         self.SGN = 0
         self.secMethodIndex = None
         self.secSystemIndex = None
+        self.sim_cell = []
 
     def initialize_values(self):
         """allows to reset values if the same superContext is used to parse different files"""
@@ -67,6 +78,7 @@ class SampleContext(object):
         self.mainFilePath = self.mainFile[0:-12]   
 #        print("self.mainFileUri=",self.mainFileUri)
 #        dirPath = self.mainFileUri[0:-12]   #####exciting LOCAL HOME or from NOMAD URI nmd://  #######   YES                      OKOKOKOK
+#        print("dirPath===",dirPath)
 #        print("os.listdir(dirPath)=",os.listdir(dirPath))
 #        for files in os.listdir(self.mainFilePath):
         for files in os.listdir(dirPath):
@@ -87,17 +99,86 @@ class SampleContext(object):
                         s = g.readline()
                         if not s: break
                         s = s.strip()
-            elif files[-3:] == ".in":
+            elif files[-3:] == ".in":         ##### so far it works only for Rostam's calculations
                 if files != "ElaStic_2nd.in":
                     inputFile = files
-#                    print("Esself.mainFilePath=",self.mainFilePath)
+                    atom_labels = []
+                    posX = []
+                    posY = []
+                    posZ = []
+                    coord = []
+                    lattice = []
+                    check = False
+#                    alat = 1
 #                    print("inputFile=",inputFile)
                     os.chdir(self.mainFilePath)
                     with open(inputFile) as g:
+                        fromB = unit_conversion.convert_unit_function("bohr", "m")
                         while 1:
                             s = g.readline()
                             if not s: break
                             s = s.strip()
+                            s = s.split()
+#                            print("s===",s)
+#                            print("s[0]===",s[0])
+#                            print("len(s)===",len(s))
+                            if s[0] == "ibrav":         ####### Rostam's: ibrav always 0
+#                                print("s[0]===",s[0])
+                                ibrav = s[2]
+                            elif s[0] == "celldm(1)":
+                                alat = float(s[2])
+                            elif len(s) == 4:
+                                atom_labels.append(s[0])
+                                posX.append(float(s[1]))
+                                posY.append(float(s[2]))
+                                posZ.append(float(s[3]))
+                            elif len(s) == 3 and s[1] != "=": 
+                                if is_number(s[0]):
+                                    lattice.append([fromB(alat*float(s[0])),fromB(alat*float(s[1])),fromB(alat*float(s[2]))])
+                                else:
+                                    pass
+#                                try: 
+#                                    float(s[0])                   
+#                                    return check = True
+#                                except:
+#                                    check = False
+#                                print("check===",check)
+#                                for i in range(3):
+#                                try:
+#                                    lattice.append(float(s[0]),float(s[1]),float(s[2]))
+#                                    print("qui????")
+#                                except:
+#                                    print("quo???")
+                    #                pass    
+#                        print("lattice===",lattice)
+                        for i in range(len(atom_labels)):
+                            coord.append([posX[i],posY[i],posZ[i]])
+#                            for j in range(3):
+#                            coord[i][0] = posX[i]
+#                            coord[i][1] = posY[i]
+#                            coord[i][2] = posZ[i]
+#                        print("alat===",alat)
+#                        print("atoms===",atoms)
+#                        print("posX===",posX)
+#                        print("posY===",posY)
+#                        print("posZ===",posZ)
+                        cell = [[lattice[0][0],lattice[0][1],lattice[0][2]],
+                                [lattice[1][0],lattice[1][1],lattice[1][2]],
+                                [lattice[2][0],lattice[2][1],lattice[2][2]]]
+                        self.sim_cell = cell
+                        atoms = Atoms(atom_labels, coord, cell=[(1, 0, 0),(0, 1, 0),(0, 0, 1)])
+                        atoms.set_cell(self.sim_cell, scale_atoms=True)
+                        coord = atoms.get_positions()
+                        backend.addArrayValues('atom_positions', np.asarray(coord))
+                        backend.addArrayValues('atom_labels', np.asarray(atom_labels))
+                        backend.addValue("simulation_cell", cell) 
+#                        print("coord===",coord)
+#    def is_number(s):
+#        try:
+#            float(s)
+#            return True
+#        except ValueError:
+#            return False
 
     def onClose_section_method(self, backend, gIndex, section):
 #        print("quoooo")
@@ -106,15 +187,26 @@ class SampleContext(object):
         elCode = section['x_elastic_code']
         elasticGIndex = backend.openSection("section_single_configuration_calculation")
         self.mainFilePath = self.mainFileUri[0:-12]  
+        questa = os.getcwd()
+#        print("questa===",questa)
+#        print("self.mainFilePath===",self.mainFilePath)
         mdr = float(section['x_elastic_max_lagrangian_strain'][0])
         ordr = int(section['x_elastic_elastic_constant_order'][0])
         nds = int(section['x_elastic_number_of_distorted_structures'][0])
+        meth = section['x_elastic_calculation_method'][0]
+#        print("meth===",meth)
         polFit2 = (nds-1)/2
         polFit4 = polFit2 - 1
         polFit6 = polFit2 - 2
         polFit2Cross = polFit2 - 1
         polFit4Cross = polFit4 - 1
         polFit6Cross = polFit6 - 1
+        polFit1 = (nds-1)/2
+        polFit3 = polFit1 - 1
+        polFit5 = polFit1 - 2
+        polFit1Cross = polFit1 - 1
+        polFit3Cross = polFit3 - 1
+        polFit5Cross = polFit5 - 1
         ext_uri = []
     #    os.chdir(self.mainFilePath)
 
@@ -186,29 +278,43 @@ class SampleContext(object):
 
         energy = []
         eta = []
-
+        LagrStress = []
+        LagrStress_dummy = []
+        physStress = []
+        physStress_dummy = []
+#        print("ECs===",ECs)
         for j in range(1, ECs+1):
             if (j<10):
                 Dstn = 'Dst0'+ str(j)
                 eta.append([])
                 energy.append([])
+#                LagrStress.append([])
+                LagrStress_dummy.append([])
+                physStress_dummy.append([])
             else:
                 Dstn = 'Dst' + str(j)
                 eta.append([])
                 energy.append([])
+#                LagrStress.append([])
+                LagrStress_dummy.append([])
+                physStress_dummy.append([])
 
 ###############ADDED BELOW###################
 #
-            cur_dir = os.getcwd() 
-#            print("cur_dir=", cur_dir)
+#            cur_dir = os.getcwd() 
+#            print("cur_dir====", cur_dir)
 #
 ##############ADDED ABOVE####################
 
             os.chdir(Dstn)
 
+#            cur_dir = os.getcwd()
+#            print("cur_dir=======", cur_dir)
+
             cur_dir = os.getcwd() 
-#            print("cur_dir=", cur_dir)
-#            print("elCode[0]=",elCode[0])
+#            print("energy=", energy)
+#            print("elCode[0]===",elCode[0])
+#            print("meth===",meth)
             if elCode[0] == 'exciting':
 #                print("ooooooooooexciting")
                 try:
@@ -254,7 +360,7 @@ class SampleContext(object):
                    energy[-1].append(float(dummy_energy)*ha_per_joule)
                 os.chdir('../')
 
-            elif elCode[0] == 'QUANTUM':
+            elif (elCode[0] == 'QUANTUM' or elCode[0] == 'Quantum') and meth == 'Energy':
 #                print("oooooooooooowien2k")
                 f = open(Dstn+'_Energy.dat', 'r')
                 while 1:
@@ -266,6 +372,53 @@ class SampleContext(object):
 #                   print("dummy_energy=",dummy_energy)
                    eta[-1].append(float(dummy_eta))
                    energy[-1].append(float(dummy_energy)*ha_per_joule)
+#                print("etaqui===",eta)
+                os.chdir('../')
+
+            elif elCode[0] == 'QUANTUM' and meth == 'Stress':
+#                print("oooooooooooowien2k")
+                f = open(Dstn+'_Lagrangian-stress.dat', 'r')
+                while 1:
+                   s = f.readline()
+                   if not s: break
+                   s = s.strip()
+                   s = s.split()
+                   if is_number(s[0]):
+#                   print("s===",s)
+                       dummy_eta = s[0] 
+                       dummy_LS1 = s[1]
+                       dummy_LS2 = s[2]
+                       dummy_LS3 = s[3]
+                       dummy_LS4 = s[4]
+                       dummy_LS5 = s[5]
+                       dummy_LS6 = s[6]
+#                   print("dummy_eta=",dummy_eta)
+#                   print("dummy_energy=",dummy_energy)
+                       eta[-1].append(float(dummy_eta))
+                       LagrStress_dummy[-1].append([float(dummy_LS1),float(dummy_LS2),float(dummy_LS3),float(dummy_LS4),float(dummy_LS5),float(dummy_LS6)])
+#                for i in range(len(LagrStress_dummy[-1])):
+#                print("eta===",eta)                    
+     
+                g = open(Dstn+'_Physical-stress.dat', 'r')
+                while 1:
+                   s = g.readline()
+                   if not s: break
+                   s = s.strip()
+                   s = s.split()
+                   if is_number(s[0]):
+#                   print("s===",s)
+#                       dummy_eta = s[0]
+                       dummy_PS1 = s[1]
+                       dummy_PS2 = s[2]
+                       dummy_PS3 = s[3]
+                       dummy_PS4 = s[4]
+                       dummy_PS5 = s[5]
+                       dummy_PS6 = s[6]
+#                   print("dummy_eta=",dummy_eta)
+#                   print("dummy_energy=",dummy_energy)
+#                       eta[-1].append(float(dummy_eta))
+                       physStress_dummy[-1].append([float(dummy_PS1),float(dummy_PS2),float(dummy_PS3),float(dummy_PS4),float(dummy_PS5),float(dummy_PS6)])
+#                print("physStr===",physStress)
                 os.chdir('../')
 
             else:
@@ -273,6 +426,8 @@ class SampleContext(object):
 
         defTyp = []
 
+#        cur_dir = os.getcwd()
+#        print("etta===", eta)
         f = open('Distorted_Parameters','r')
 
         while 1:
@@ -351,22 +506,43 @@ class SampleContext(object):
                        pass
                 else:
                     if ordr == 2:
-                        Dstn = 'Dst' + str(i) + '_d2E.dat'
+                        Dstna = 'Dst' + str(i) + '_d2E.dat'
+                        Dstnb = 'Dst' + str(i) + '_ddE.dat'
                     elif ordr == 3:
-                        Dstn = 'Dst'+ str(i) + '_d3E.dat'
-                    f = open (Dstn,'r')
-                    while 1:
-                        s = f.readline()
-                        if not s: break
-                        s = s.strip()
-                        if "order" in s.split():
-                            d2E_val_tot[-1].append([])
-                            d2E_eta_tot[-1].append([])
-                        elif len(s) >= 30:
-                            d2E_eta, d2E_values = s.split()
-                            d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
-                            d2E_eta_tot[-1][-1].append(float(d2E_eta))
-                    f.close()
+                        Dstna = 'Dst'+ str(i) + '_d3E.dat'
+                    try:
+                        f = open (Dstna,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                d2E_val_tot[-1].append([])
+                                d2E_eta_tot[-1].append([])
+                            elif len(s) >= 30:
+                                d2E_eta, d2E_values = s.split()
+                                d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
+                                d2E_eta_tot[-1][-1].append(float(d2E_eta))
+                        f.close()
+                    except:
+                        pass
+                    try:
+                        f = open (Dstnb,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                d2E_val_tot[-1].append([])
+                                d2E_eta_tot[-1].append([])
+                            elif len(s) >= 30:
+                                d2E_eta, d2E_values = s.split()
+                                d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
+                                d2E_eta_tot[-1][-1].append(float(d2E_eta))
+                        f.close()
+                    except:
+                        pass
+
                 d2E6_val.append(d2E_val_tot[i-1][0])
                 d2E4_val.append(d2E_val_tot[i-1][1])
                 d2E2_val.append(d2E_val_tot[i-1][2])
@@ -424,6 +600,124 @@ class SampleContext(object):
                 CrossVal2_eta.append(CrossVal_eta_tot[i-1][2])
 
             os.chdir('../')
+
+        elif 'Stress-vs-Strain' in prova:
+
+            os.chdir('Stress-vs-Strain')
+
+            dS5_val = [[],[],[],[],[],[]]
+            dS3_val = [[],[],[],[],[],[]]
+            dS1_val = [[],[],[],[],[],[]]
+            dS5_eta = [[],[],[],[],[],[]]
+            dS3_eta = [[],[],[],[],[],[]]
+            dS1_eta = [[],[],[],[],[],[]]
+            dS_val_tot = [[],[],[],[],[],[]]
+            dS_eta_tot = [[],[],[],[],[],[]]
+            string = []
+            stringCV = []
+
+            for i in range(6):
+                string.append('Dstn'+str(i+1))
+                stringCV.append('DstnCV'+str(i+1))
+            
+            for Dstn in string:
+                j = string.index(Dstn)
+                for i in range(1, ECs+1):
+                    dS_val_tot[string.index(Dstn)].append([])
+                    dS_eta_tot[string.index(Dstn)].append([])
+                    if (i<10):
+                        Dstn = 'Dst0'+ str(i) + '_LS' + str(string.index(Dstn)+1) + '_dS.dat'
+                        f = open (Dstn,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                dS_val_tot[j][-1].append([])
+                                dS_eta_tot[j][-1].append([])
+                            elif len(s) >= 30:
+                                dS_eta, dS_values = s.split()
+                                dS_val_tot[j][-1][-1].append(float(dS_values)*giga)
+                                dS_eta_tot[j][-1][-1].append(float(dS_eta))
+                        f.close()
+                    else:
+                        Dstn = 'Dst'+ str(i) + '_LS' + str(string.index(Dstn)+1) + '_dS.dat'
+                        f = open (Dstn,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                dS_val_tot[j][-1].append([])
+                                dS_eta_tot[j][-1].append([])
+                            elif len(s) >= 30:
+                                dS_eta, dS_values = s.split()
+                                dS_val_tot[j][-1][-1].append(float(dS_values)*giga)
+                                dS_eta_tot[j][-1][-1].append(float(dS_eta))
+                        f.close()
+
+                    dS5_val[j].append(dS_val_tot[j][i-1][0])
+                    dS3_val[j].append(dS_val_tot[j][i-1][1])
+                    dS1_val[j].append(dS_val_tot[j][i-1][2])
+                    dS5_eta[j].append(dS_eta_tot[j][i-1][0])
+                    dS3_eta[j].append(dS_eta_tot[j][i-1][1])
+                    dS1_eta[j].append(dS_eta_tot[j][i-1][2])
+
+            CrossVal5_val = [[],[],[],[],[],[]]
+            CrossVal3_val = [[],[],[],[],[],[]]
+            CrossVal1_val = [[],[],[],[],[],[]]
+            CrossVal_val_tot = [[],[],[],[],[],[]]
+
+            CrossVal5_eta = [[],[],[],[],[],[]]
+            CrossVal3_eta = [[],[],[],[],[],[]]
+            CrossVal1_eta = [[],[],[],[],[],[]]
+            CrossVal_eta_tot = [[],[],[],[],[],[]]
+
+            for DstnCV in stringCV:
+                j = stringCV.index(DstnCV)
+                for i in range(1, ECs+1):
+                    CrossVal_val_tot[stringCV.index(DstnCV)].append([])
+                    CrossVal_eta_tot[stringCV.index(DstnCV)].append([])
+                    if (i<10):
+                        DstnCV = 'Dst0'+ str(i) + '_LS' + str(stringCV.index(DstnCV)+1) + '_CVe.dat'
+                        f = open (DstnCV,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                CrossVal_val_tot[j][-1].append([])
+                                CrossVal_eta_tot[j][-1].append([])
+                            elif len(s) >= 20 and s.split()[0] != '#':
+                                CrossVal_eta, CrossVal_values = s.split()
+                                CrossVal_val_tot[j][-1][-1].append(float(CrossVal_values)*ha_per_joule)
+                                CrossVal_eta_tot[j][-1][-1].append(float(CrossVal_eta))
+                        f.close()
+                    else:
+                        DstnCV = 'Dst'+ str(i) + '_LS' + str(stringCV.index(DstnCV)+1) + '_CVe.dat'
+                        f = open (DstnCV,'r')
+                        while 1:
+                            s = f.readline()
+                            if not s: break
+                            s = s.strip()
+                            if "order" in s.split():
+                                CrossVal_val_tot[j][-1].append([])
+                                CrossVal_eta_tot[j][-1].append([])
+                            elif len(s) >= 20 and s.split()[0] != '#':
+                                CrossVal_eta, CrossVal_values = s.split()
+                                CrossVal_val_tot[j][-1][-1].append(float(CrossVal_values)*ha_per_joule)
+                                CrossVal_eta_tot[j][-1][-1].append(float(CrossVal_eta))
+                        f.close()
+                    CrossVal5_val[j].append(CrossVal_val_tot[j][i-1][0])
+                    CrossVal3_val[j].append(CrossVal_val_tot[j][i-1][1])
+                    CrossVal1_val[j].append(CrossVal_val_tot[j][i-1][2])
+                    CrossVal5_eta[j].append(CrossVal_eta_tot[j][i-1][0])
+                    CrossVal3_eta[j].append(CrossVal_eta_tot[j][i-1][1])
+                    CrossVal1_eta[j].append(CrossVal_eta_tot[j][i-1][2])
+#                    print("CrossVal5_val===",CrossVal5_val)
+            os.chdir('../')
+
+########################################################################
         else:
             pass
 
@@ -434,12 +728,33 @@ class SampleContext(object):
 
         EC_eigen = []
 
-        for i in range(1, ECs+1):
-            s = f.readline()
-            s = s.strip()
-            dummy, etaEC_dummy, fitEC_dummy = s.split()
-            self.etaEC.append(float(etaEC_dummy))
-            self.fitEC.append(int(fitEC_dummy))
+        if meth == 'Energy':
+            for i in range(1, ECs+1):
+                s = f.readline()
+                s = s.strip()
+                dummy, etaEC_dummy, fitEC_dummy = s.split()
+                self.etaEC.append(float(etaEC_dummy))
+                self.fitEC.append(int(fitEC_dummy))
+
+        elif meth == 'Stress':
+#            etaMax = []
+#            fit = []
+            while 1:
+                s = f.readline()
+                if not s: break
+                s = s.strip()
+                s = s.split()
+#                print("s===",s)
+                if not is_number(s[0]):
+                    self.etaEC.append([])
+                    for i in range(6): self.etaEC[-1].append(float(s[i+1]))
+                else:
+                    self.fitEC.append([])
+                    for i in range(6): self.fitEC[-1].append(int(s[i]))
+#                print("eta===",eta)
+#                print("fit===",fit)
+        else:
+            pass
 
         f.close()
 
@@ -513,60 +828,191 @@ class SampleContext(object):
 
 #            backend.addValue("x_elastic_deformation_types", defTyp)
 #            backend.addValue("x_elastic_number_of_deformations", defNum)
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "energy")
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
-            backend.addValue("x_elastic_strain_diagram_eta_values", eta)
-            backend.addValue("x_elastic_strain_diagram_values", energy)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 2)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit2Cross)
-            backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal2_eta)
-            backend.addValue("x_elastic_strain_diagram_values", CrossVal2_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 4)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit4Cross)
-            backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal4_eta)
-            backend.addValue("x_elastic_strain_diagram_values", CrossVal4_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 6)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit6Cross)
-            backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal6_eta)
-            backend.addValue("x_elastic_strain_diagram_values", CrossVal6_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "d2E")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 2)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit2)
-            backend.addValue("x_elastic_strain_diagram_eta_values", d2E2_eta)
-            backend.addValue("x_elastic_strain_diagram_values", d2E2_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "d2E")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 4)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit4)
-            backend.addValue("x_elastic_strain_diagram_eta_values", d2E4_eta)
-            backend.addValue("x_elastic_strain_diagram_values", d2E4_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
-            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-            backend.addValue("x_elastic_strain_diagram_type", "d2E")
-            backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 6)
-            backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit6)
-            backend.addValue("x_elastic_strain_diagram_eta_values", d2E6_eta)
-            backend.addValue("x_elastic_strain_diagram_values", d2E6_val)
-            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+#            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+#            backend.addValue("x_elastic_strain_diagram_type", "energy")
+#            backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
+#            backend.addValue("x_elastic_strain_diagram_eta_values", eta)
+#            backend.addValue("x_elastic_strain_diagram_values", energy)
+#            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+#            print("eta===",eta)
+            if meth == 'Energy':
+#                print("eta===",eta)
+#                print("CrossVal2_eta===",CrossVal2_eta)
+#                print("d2E2_eta===",d2E2_eta)
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "energy")
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
+                backend.addValue("x_elastic_strain_diagram_eta_values", eta)
+                backend.addValue("x_elastic_strain_diagram_values", energy)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+#                print("CrossVal2_eta=",CrossVal2_eta)
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 2)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit2Cross)
+                backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal2_eta)
+                backend.addValue("x_elastic_strain_diagram_values", CrossVal2_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 4)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit4Cross)
+                backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal4_eta)
+                backend.addValue("x_elastic_strain_diagram_values", CrossVal4_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 6)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit6Cross)
+                backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal6_eta)
+                backend.addValue("x_elastic_strain_diagram_values", CrossVal6_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "d2E")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 2)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit2)
+                backend.addValue("x_elastic_strain_diagram_eta_values", d2E2_eta)
+                backend.addValue("x_elastic_strain_diagram_values", d2E2_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "d2E")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 4)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit4)
+                backend.addValue("x_elastic_strain_diagram_eta_values", d2E4_eta)
+                backend.addValue("x_elastic_strain_diagram_values", d2E4_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                backend.addValue("x_elastic_strain_diagram_type", "d2E")
+                backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 6)
+                backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit6)
+                backend.addValue("x_elastic_strain_diagram_eta_values", d2E6_eta)
+                backend.addValue("x_elastic_strain_diagram_values", d2E6_val)
+                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+            elif meth == 'Stress':
+#                pass
+#                print("LagrStressInizio===",LagrStress)
+#                print("LagrStress_dummy===",LagrStress_dummy)
+                for k in range(6):
+                    LagrStress.append([])
+                    physStress.append([])
+#                    print("LagrStressKVoigt===",LagrStress)
+                    for j in range(len(LagrStress_dummy)):
+                        LagrStress[-1].append([])
+                        physStress[-1].append([])
+#                        print("LagrStressJDeform===",LagrStress)
+                        for i in range(len(LagrStress_dummy[j])):
+#                            print("Voigt===",k)
+#                            print("deform===",j)
+#                            print("eta===",i)
+#                            print("LagrStress_dummy[j][k][i]===",LagrStress_dummy[j][i][k])
+                            LagrStress[k][j].append(LagrStress_dummy[j][i][k])
+                            physStress[k][j].append(physStress_dummy[j][i][k])
+#                    for j in range(len(LagrStress_dummy[i])):
+#                    for k in range(6):
+#                        LagrStress[i].append([])
+#                        for j in range(len(LagrStress_dummy[i])):
+#                            LagrStress[i][k].append(LagrStress_dummy[i][j][k])
+#                print("LagrStress_dummy===",LagrStress_dummy)
+#                print("physStress_dummy===",physStress_dummy)
+#                print("LagrStress===",LagrStress)
+#                print("physStress===",physStress) 
+#                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+#                backend.addValue("x_elastic_strain_diagram_type", "Lagrangian-stress")
+#                backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(k+1))
+#                backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
+#                backend.addValue("x_elastic_strain_diagram_eta_values", eta)
+#                backend.addValue("x_elastic_strain_diagram_values", LagrStress[i][k])
+#                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                 
+#                print("LagrStress===",LagrStress)
+                for i in range(0,6):
+#                    print("eta===",eta)
+#                    print("eta[0]===",eta)
+#                    print("LagrStress===",LagrStress)
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "Lagrangian-stress")
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
+                    backend.addValue("x_elastic_strain_diagram_eta_values", eta)
+#                    backend.addArrayValues("x_elastic_strain_diagram_eta_values",np.asarray(eta))
+                    backend.addValue("x_elastic_strain_diagram_values", LagrStress[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+                
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "Physical-stress")
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
+                    backend.addValue("x_elastic_strain_diagram_eta_values", eta)
+#                    backend.addArrayValues("x_elastic_strain_diagram_eta_values",np.asarray(eta))
+                    backend.addValue("x_elastic_strain_diagram_values", physStress[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+#        backend.addArrayValues('configuration_periodic_dimensions', np.asarray([True, True, True]))
+
+#                    print("CrossVal1_eta===",CrossVal1_eta)
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 1)
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit1Cross)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal1_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", CrossVal1_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 3)
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit3Cross)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal3_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", CrossVal3_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 5)
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit5Cross)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", CrossVal5_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", CrossVal5_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "dtn")
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 1)
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit1)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", dS1_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", dS1_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "dtn")
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 3)
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit3)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", dS3_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", dS3_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+
+                    elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
+                    backend.addValue("x_elastic_strain_diagram_type", "dtn")
+                    backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 5)
+                    backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
+                    backend.addValue("x_elastic_strain_diagram_number_of_eta", polFit5)
+                    backend.addValue("x_elastic_strain_diagram_eta_values", dS5_eta[i])
+                    backend.addValue("x_elastic_strain_diagram_values", dS5_val[i])
+                    backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
+                
+            else:
+                pass
 
             backend.addValue('x_elastic_2nd_order_constants_notation_matrix',voigtMat)
             backend.addValue('x_elastic_2nd_order_constants_matrix',ECMat)
@@ -587,10 +1033,13 @@ class SampleContext(object):
             backend.closeSection("section_single_configuration_calculation", elasticGIndex)
             backend.addValue("x_elastic_deformation_types", defTyp)
             backend.addValue("x_elastic_number_of_deformations", defNum)
-            elasticPIndex = backend.openSection("x_elastic_section_fitting_parameters")
-            backend.addValue("x_elastic_fitting_parameters_eta", self.etaEC)
-            backend.addValue("x_elastic_fitting_parameters_polinomial_order", self.fitEC)
-            backend.closeSection("x_elastic_section_fitting_parameters", elasticPIndex)
+            if meth == "Energy":
+                elasticPIndex = backend.openSection("x_elastic_section_fitting_parameters")
+                backend.addValue("x_elastic_fitting_parameters_eta", self.etaEC)
+                backend.addValue("x_elastic_fitting_parameters_polinomial_order", self.fitEC)
+                backend.closeSection("x_elastic_section_fitting_parameters", elasticPIndex)
+            else:
+                pass
 
         elif ordr == 3:
             f = open ('ElaStic_'+str(ordr)+'rd.out','r')
@@ -1092,10 +1541,13 @@ class SampleContext(object):
             backend.closeSection("section_single_configuration_calculation", elasticGIndex)
             backend.addValue("x_elastic_deformation_types", defTyp)
             backend.addValue("x_elastic_number_of_deformations", defNum)
-            elasticPIndex = backend.openSection("x_elastic_section_fitting_parameters")
-            backend.addValue("x_elastic_fitting_parameters_eta", self.etaEC)
-            backend.addValue("x_elastic_fitting_parameters_polinomial_order", self.fitEC)
-            backend.closeSection("x_elastic_section_fitting_parameters", elasticPIndex)
+            if meth == "Energy":
+                elasticPIndex = backend.openSection("x_elastic_section_fitting_parameters")
+                backend.addValue("x_elastic_fitting_parameters_eta", self.etaEC)
+                backend.addValue("x_elastic_fitting_parameters_polinomial_order", self.fitEC)
+                backend.closeSection("x_elastic_section_fitting_parameters", elasticPIndex)
+            else:
+                pass
 
     def onClose_section_single_configuration_calculation(self, backend, gIndex, section):
 #    logging.error("BASE onClose_section_single_configuration_calculation")