diff --git a/.gitignore b/.gitignore index a117b8c..f498988 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,8 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +#COMPSs temp files and folders +.COMPSs/ +tmp.*/ +compss-* \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/PAM_DISTORTION.py b/PHASES/AUTOMATION_ML/PAM_DISTORTION.py index c12f200..b8a7b71 100644 --- a/PHASES/AUTOMATION_ML/PAM_DISTORTION.py +++ b/PHASES/AUTOMATION_ML/PAM_DISTORTION.py @@ -1,159 +1,159 @@ -# -*- coding: utf-8 -*- -""" -ESI Group -SMO -""" -import os -import socket -from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API -from pycompss.api.task import task -from pycompss.api.parameter import * -from pycompss.api.constraint import constraint -from pycompss.api.multinode import multinode - -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) -def run(Curing_base_name, Distortion_Base_Name, inputs_folder, outputs_folder, source_folder, **kwargs): - # import socket - # Variables - # Visual will read the variables values from a txt file that is written at the end of this section - print('_____________________________________________________________________________________') - print('Starting distortion simulation') - if source_folder: - source_folder_folder = source_folder - - if inputs_folder: - input_files_folder =inputs_folder - if outputs_folder: - outputs_files_folder =outputs_folder - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - else: - print('no outputs file provided!!!') - - #Distortion_Base_Name = 'Lk_Distortion_40' - #Curing_base_name = 'Lk_Curing' - - if "machine" in kwargs: - machine = kwargs["machine"] - - if "gaps" in kwargs: - gaps = kwargs["gaps"] - - display = 0 - # paths - if machine == 'BORLAP020': - DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin' - DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\pamdistortion.bat' - if display == 1: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - elif machine == 'bruclu': - display = 0 - DistortionSolverFolderPath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin' - DistortionSolverFilePath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' - DistortionsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - elif machine == 'HPCBSC': - display = 0 - DistortionSolverFolderPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin' - DistortionSolverFilePath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' - DistortionsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - - # Fixed variables - SourceDirectory = source_folder_folder - VariablesTxtPath = os.path.join(os.getcwd(), 'VariablesList.txt') - CuringVdbName = Curing_base_name + '.vdb' - DistortionVdbName = Distortion_Base_Name + '.vdb' - DistortionPcName = Distortion_Base_Name + '.pc' - DistortionIncName = Distortion_Base_Name + '.inc' - DistortionOriName = Distortion_Base_Name + '.ori' - Curingbasefolder = input_files_folder - Distortionbasefolder = outputs_files_folder - - VdbCuringFilePath = os.path.join(Curingbasefolder, CuringVdbName) - CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' - CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) - SourceVdbDistortionFilePath = os.path.join(SourceDirectory, DistortionVdbName) - sourcePcDistortionFilePath = os.path.join(SourceDirectory, DistortionPcName) - sourceIncDistortionFilePath = os.path.join(SourceDirectory, DistortionIncName) - sourceOriDistortionFilePath = os.path.join(SourceDirectory, DistortionOriName) - - VdbDistortionFilePath = os.path.join(Distortionbasefolder, DistortionVdbName) - PcDistortionFilePath = os.path.join(Distortionbasefolder, DistortionPcName) - - import shutil - shutil.copy(SourceVdbDistortionFilePath, outputs_files_folder) - - MacroDistortionList = [#'31_DistortionPreparingModel.py', - #'32_DistortionResinParameters.py', - #'33_DistortionFiberParameters.py', - #'34_DistortionComputePly.py', - #'35_DistortionCharacterizeLaminate.py', - '36_DistortionProcessConditions.py', - '37_DistortionSimulationParameters.py' - ] - - #%% Start running the DoE - #write for macros - VariablesDict = {} - VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath - VariablesDict['VdbDistortionFilePath'] = VdbDistortionFilePath - VariablesDict['SourceFilesPath'] = SourceDirectory - VariablesDict['DistortionSolverFolderPath'] = DistortionSolverFolderPath - VariablesDict['DistortionSolverFilePath'] = DistortionSolverFilePath - VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - - # Default values - VariablesDict['Viscosity'] = 0.2 - - # Write the variables in a txt file. - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - - #Application initialization - Distortionmodel = Visual_API() - Distortionmodel.FileName = Distortion_Base_Name - Distortionmodel.solverPath = DistortionSolverFilePath - Distortionmodel.solverVEPath = DistortionsolverVEPath - Distortionmodel.basefolder = Distortionbasefolder - Distortionmodel.inputFile = PcDistortionFilePath - Distortionmodel.SourceFilesPath = SourceDirectory - Distortionmodel.VariablesTxtPath = VariablesTxtPath - - if machine == 'BORLAP020': - BatFileName = Distortion_Base_Name + '.bat' - else: - BatFileName = Distortion_Base_Name + '.sh' - Distortionmodel.BatFilePath = os.path.join(Distortionbasefolder, BatFileName) - Distortionmodel.DistortionsolverWinTailPath = DistortionsolverWinTailPath - Distortionmodel.simtype = 'DISTORTION' - Distortionmodel.machine = machine - OutputfileName = Distortion_Base_Name + '.out' - Distortionmodel.outputFile = os.path.join(Distortionbasefolder, OutputfileName) - Distortionmodel.display = display - Distortionmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - Distortionmodel.nt = 2 # Number of threads - Distortionmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - Distortionmodel.np = 16 - # #Execute macros - for elem in MacroDistortionList: - Distortionmodel.LaunchMacro(elem) - - Distortionmodel.LaunchMacro('38_DistortionRun.py') - - # solve - Distortionmodel.solveStep(runInBackground=False) - - return "PAM_DISTORSION finished" - +# -*- coding: utf-8 -*- +""" +ESI Group +SMO +""" +import os +import socket +from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API +from pycompss.api.task import task +from pycompss.api.parameter import * +from pycompss.api.constraint import constraint +from pycompss.api.multinode import multinode + +@constraint(computing_units=24) +@multinode(computing_nodes=1) +@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) +def run(Curing_base_name, Distortion_Base_Name, inputs_folder, outputs_folder, source_folder, **kwargs): + # import socket + # Variables + # Visual will read the variables values from a txt file that is written at the end of this section + print('_____________________________________________________________________________________') + print('Starting distortion simulation') + if source_folder: + source_folder_folder = source_folder + + if inputs_folder: + input_files_folder =inputs_folder + if outputs_folder: + outputs_files_folder =outputs_folder + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + print("Folder '{}' created.".format(outputs_files_folder)) + else: + print("Folder '{}' already exists.".format(outputs_files_folder)) + else: + print('no outputs file provided!!!') + + #Distortion_Base_Name = 'Lk_Distortion_40' + #Curing_base_name = 'Lk_Curing' + + if "machine" in kwargs: + machine = kwargs["machine"] + + if "gaps" in kwargs: + gaps = kwargs["gaps"] + + display = 0 + # paths + if machine == 'BORLAP020': + DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin' + DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\pamdistortion.bat' + if display == 1: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + elif machine == 'bruclu': + display = 0 + DistortionSolverFolderPath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin' + DistortionSolverFilePath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' + DistortionsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + elif machine == 'HPCBSC': + display = 0 + DistortionSolverFolderPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin' + DistortionSolverFilePath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' + DistortionsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + + # Fixed variables + SourceDirectory = source_folder_folder + VariablesTxtPath = os.path.join(os.getcwd(), 'VariablesList.txt') + CuringVdbName = Curing_base_name + '.vdb' + DistortionVdbName = Distortion_Base_Name + '.vdb' + DistortionPcName = Distortion_Base_Name + '.pc' + DistortionIncName = Distortion_Base_Name + '.inc' + DistortionOriName = Distortion_Base_Name + '.ori' + Curingbasefolder = input_files_folder + Distortionbasefolder = outputs_files_folder + + VdbCuringFilePath = os.path.join(Curingbasefolder, CuringVdbName) + CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' + CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) + SourceVdbDistortionFilePath = os.path.join(SourceDirectory, DistortionVdbName) + sourcePcDistortionFilePath = os.path.join(SourceDirectory, DistortionPcName) + sourceIncDistortionFilePath = os.path.join(SourceDirectory, DistortionIncName) + sourceOriDistortionFilePath = os.path.join(SourceDirectory, DistortionOriName) + + VdbDistortionFilePath = os.path.join(Distortionbasefolder, DistortionVdbName) + PcDistortionFilePath = os.path.join(Distortionbasefolder, DistortionPcName) + + import shutil + shutil.copy(SourceVdbDistortionFilePath, outputs_files_folder) + + MacroDistortionList = [#'31_DistortionPreparingModel.py', + #'32_DistortionResinParameters.py', + #'33_DistortionFiberParameters.py', + #'34_DistortionComputePly.py', + #'35_DistortionCharacterizeLaminate.py', + '36_DistortionProcessConditions.py', + '37_DistortionSimulationParameters.py' + ] + + #%% Start running the DoE + #write for macros + VariablesDict = {} + VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath + VariablesDict['VdbDistortionFilePath'] = VdbDistortionFilePath + VariablesDict['SourceFilesPath'] = SourceDirectory + VariablesDict['DistortionSolverFolderPath'] = DistortionSolverFolderPath + VariablesDict['DistortionSolverFilePath'] = DistortionSolverFilePath + VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + + # Default values + VariablesDict['Viscosity'] = 0.2 + + # Write the variables in a txt file. + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + + #Application initialization + Distortionmodel = Visual_API() + Distortionmodel.FileName = Distortion_Base_Name + Distortionmodel.solverPath = DistortionSolverFilePath + Distortionmodel.solverVEPath = DistortionsolverVEPath + Distortionmodel.basefolder = Distortionbasefolder + Distortionmodel.inputFile = PcDistortionFilePath + Distortionmodel.SourceFilesPath = SourceDirectory + Distortionmodel.VariablesTxtPath = VariablesTxtPath + + if machine == 'BORLAP020': + BatFileName = Distortion_Base_Name + '.bat' + else: + BatFileName = Distortion_Base_Name + '.sh' + Distortionmodel.BatFilePath = os.path.join(Distortionbasefolder, BatFileName) + Distortionmodel.DistortionsolverWinTailPath = DistortionsolverWinTailPath + Distortionmodel.simtype = 'DISTORTION' + Distortionmodel.machine = machine + OutputfileName = Distortion_Base_Name + '.out' + Distortionmodel.outputFile = os.path.join(Distortionbasefolder, OutputfileName) + Distortionmodel.display = display + Distortionmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + Distortionmodel.nt = 2 # Number of threads + Distortionmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + Distortionmodel.np = 24 + # #Execute macros + for elem in MacroDistortionList: + Distortionmodel.LaunchMacro(elem) + + Distortionmodel.LaunchMacro('38_DistortionRun.py') + + # solve + Distortionmodel.solveStep(runInBackground=False) + + return "PAM_DISTORSION finished" + diff --git a/PHASES/AUTOMATION_ML/PAM_RTMc.py b/PHASES/AUTOMATION_ML/PAM_RTMc.py index b1c836e..d9e35bd 100644 --- a/PHASES/AUTOMATION_ML/PAM_RTMc.py +++ b/PHASES/AUTOMATION_ML/PAM_RTMc.py @@ -1,147 +1,147 @@ -# -*- coding: utf-8 -*- -""" -Created on Wed Jun 28 15:47:58 2023 - -@author: SMO -""" -import os -from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API -from pycompss.api.task import task -from pycompss.api.parameter import * -from pycompss.api.constraint import constraint -from pycompss.api.multinode import multinode - -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) -def run(RTM_base_name, Curing_base_name, inputs_folder, outputs_folder, source_folder, **kwargs): - import socket - print('_____________________________________________________________________________________') - print('Starting curing simulation') - - print(f"kwargs: {kwargs}") - #%% Variables - #Curing_base_name = 'Lk_Curing' - #RTM_base_name = 'Lk_RTM_40' - - #Visual will read the variables values from a txt file that is written at the end of this section - if source_folder: - source_folder_folder = source_folder - - if inputs_folder: - input_files_folder = inputs_folder - #print('inputs folder is : ', input_files_folder) - - if outputs_folder: - outputs_files_folder = outputs_folder - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - else: - print('no outputs file provided!!!') - - if "machine" in kwargs: - machine = kwargs["machine"] - display = 0 - #paths - if machine == 'BORLAP020': - RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - elif machine == 'bruclu': - display = 0 - RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - elif machine == 'HPCBSC': - display = 0 - RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - - # Fixed variables - SourceDirectory = source_folder_folder - VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) - RTMVdbName = RTM_base_name + '.vdb' - VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) - CuringVdbName = Curing_base_name + '.vdb' - RTMbasefolder = os.path.join(input_files_folder) - Curingbasefolder = os.path.join(outputs_files_folder) - SourceVdbCuringFilePath = os.path.join(SourceDirectory, CuringVdbName) - - VdbCuringFilePath = os.path.join(outputs_files_folder, CuringVdbName) - RTMunfFile = RTM_base_name + 'g.unf' - RTMunfFilesPath = os.path.join(RTMbasefolder, RTMunfFile) - CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' - CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) - - MacroCuringList = ['22_CuringMappingTempFillFactCureDegree.py', - '23_CuringSetTemperature.py', - '24_CuringWriteSolverInput.py'] - - # Internal info - VariablesDict = {} - VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath - VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath - VariablesDict['RTMSolverPath'] = RTMSolverPath - VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath - VariablesDict['RTMunfFilePath'] = RTMunfFilesPath - VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - - #Copy files to destination folder - import shutil - try: - shutil.copy(SourceVdbCuringFilePath, outputs_files_folder) - #print('File ' + SourceVdbCuringFilePath + ' copied to ' + outputs_files_folder) - except: - print('Vdb Curing file path is not at:') - print(' ', SourceVdbCuringFilePath) - # Default values - VariablesDict['Viscosity'] = 0.2 - - # Read Doe - Curing_parameters_list = ['Curing_cycle'] - - # Modified values - if "DoE_line" in kwargs: - if 'Curing_cycle' in kwargs['DoE_line']: - MacroCuringList.append('23_CuringSetTemperature.py') - VariablesDict['Curing_cycle'] = kwargs['DoE_line']['Curing_cycle'] - - # PAM-RTM uses its own python instance. A txt file is used to send it the required information - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - -#%% Curing - # Application initialization - Curingmodel = Visual_API() - Curingmodel.FileName = Curing_base_name - Curingmodel.solverPath = RTMSolverPath - Curingmodel.solverVEPath = RTMsolverVEPath - Curingmodel.basefolder = Curingbasefolder - Curingmodel.inputFile = VdbCuringFilePath - Curingmodel.SourceFilesPath = SourceDirectory - Curingmodel.VariablesTxtPath = VariablesTxtPath - Curingmodel.simtype = 'RTM' - Curingmodel.machine = machine - OutputfileName = Curing_base_name + '.out' - Curingmodel.machine = 'CLUSTER' - Curingmodel.outputFile = os.path.join(Curingbasefolder, OutputfileName) - Curingmodel.display = display - Curingmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - Curingmodel.nt = 2 # Number of threads - Curingmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - Curingmodel.np = 16 - #Execute macros - for elem in MacroCuringList: - Curingmodel.LaunchMacro(elem) - #solve - - Curingmodel.solveStep(runInBackground=False) - - return "PAM_RTMc finished" +# -*- coding: utf-8 -*- +""" +Created on Wed Jun 28 15:47:58 2023 + +@author: SMO +""" +import os +from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API +from pycompss.api.task import task +from pycompss.api.parameter import * +from pycompss.api.constraint import constraint +from pycompss.api.multinode import multinode + +@constraint(computing_units=24) +@multinode(computing_nodes=1) +@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) +def run(RTM_base_name, Curing_base_name, inputs_folder, outputs_folder, source_folder, **kwargs): + import socket + print('_____________________________________________________________________________________') + print('Starting curing simulation') + + print(f"kwargs: {kwargs}") + #%% Variables + #Curing_base_name = 'Lk_Curing' + #RTM_base_name = 'Lk_RTM_40' + + #Visual will read the variables values from a txt file that is written at the end of this section + if source_folder: + source_folder_folder = source_folder + + if inputs_folder: + input_files_folder = inputs_folder + #print('inputs folder is : ', input_files_folder) + + if outputs_folder: + outputs_files_folder = outputs_folder + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + print("Folder '{}' created.".format(outputs_files_folder)) + else: + print("Folder '{}' already exists.".format(outputs_files_folder)) + else: + print('no outputs file provided!!!') + + if "machine" in kwargs: + machine = kwargs["machine"] + display = 0 + #paths + if machine == 'BORLAP020': + RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + elif machine == 'bruclu': + display = 0 + RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + elif machine == 'HPCBSC': + display = 0 + RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + + # Fixed variables + SourceDirectory = source_folder_folder + VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) + RTMVdbName = RTM_base_name + '.vdb' + VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) + CuringVdbName = Curing_base_name + '.vdb' + RTMbasefolder = os.path.join(input_files_folder) + Curingbasefolder = os.path.join(outputs_files_folder) + SourceVdbCuringFilePath = os.path.join(SourceDirectory, CuringVdbName) + + VdbCuringFilePath = os.path.join(outputs_files_folder, CuringVdbName) + RTMunfFile = RTM_base_name + 'g.unf' + RTMunfFilesPath = os.path.join(RTMbasefolder, RTMunfFile) + CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' + CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) + + MacroCuringList = ['22_CuringMappingTempFillFactCureDegree.py', + '23_CuringSetTemperature.py', + '24_CuringWriteSolverInput.py'] + + # Internal info + VariablesDict = {} + VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath + VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath + VariablesDict['RTMSolverPath'] = RTMSolverPath + VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath + VariablesDict['RTMunfFilePath'] = RTMunfFilesPath + VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + + #Copy files to destination folder + import shutil + try: + shutil.copy(SourceVdbCuringFilePath, outputs_files_folder) + #print('File ' + SourceVdbCuringFilePath + ' copied to ' + outputs_files_folder) + except: + print('Vdb Curing file path is not at:') + print(' ', SourceVdbCuringFilePath) + # Default values + VariablesDict['Viscosity'] = 0.2 + + # Read Doe + Curing_parameters_list = ['Curing_cycle'] + + # Modified values + if "DoE_line" in kwargs: + if 'Curing_cycle' in kwargs['DoE_line']: + MacroCuringList.append('23_CuringSetTemperature.py') + VariablesDict['Curing_cycle'] = kwargs['DoE_line']['Curing_cycle'] + + # PAM-RTM uses its own python instance. A txt file is used to send it the required information + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + +#%% Curing + # Application initialization + Curingmodel = Visual_API() + Curingmodel.FileName = Curing_base_name + Curingmodel.solverPath = RTMSolverPath + Curingmodel.solverVEPath = RTMsolverVEPath + Curingmodel.basefolder = Curingbasefolder + Curingmodel.inputFile = VdbCuringFilePath + Curingmodel.SourceFilesPath = SourceDirectory + Curingmodel.VariablesTxtPath = VariablesTxtPath + Curingmodel.simtype = 'RTM' + Curingmodel.machine = machine + OutputfileName = Curing_base_name + '.out' + Curingmodel.machine = 'CLUSTER' + Curingmodel.outputFile = os.path.join(Curingbasefolder, OutputfileName) + Curingmodel.display = display + Curingmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + Curingmodel.nt = 2 # Number of threads + Curingmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + Curingmodel.np = 24 + #Execute macros + for elem in MacroCuringList: + Curingmodel.LaunchMacro(elem) + #solve + + Curingmodel.solveStep(runInBackground=False) + + return "PAM_RTMc finished" diff --git a/PHASES/AUTOMATION_ML/PAM_RTMf.py b/PHASES/AUTOMATION_ML/PAM_RTMf.py index bae57eb..db37a06 100644 --- a/PHASES/AUTOMATION_ML/PAM_RTMf.py +++ b/PHASES/AUTOMATION_ML/PAM_RTMf.py @@ -1,150 +1,154 @@ -""" -ESI Group -SMO -""" -import os -from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API -from pycompss.api.task import task -from pycompss.api.constraint import constraint -from pycompss.api.parameter import * -from pycompss.api.multinode import multinode - -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) -def run(RTM_base_name,inputs_folder, outputs_folder, source_folder, **kwargs): - ''' - This function assumes that parameter names and its values are provided in kwargs - The function check if some of the parameter names corresponds to this simulation and - modifies the default value. Then, it launches the simulation - ''' - print('_____________________________________________________________________________________') - print('Starting filling simulation') - - # for item in kwargs: - # print(item) - - # RTM_base_name = 'Lk_RTM_40' - RTM_lperm_file = RTM_base_name + '_modif.lperm' - # Visual will read the variables values from a txt file that is written at the end of this section - if source_folder: - source_folder_folder =source_folder - - if inputs_folder: - input_files_folder = inputs_folder - - if outputs_folder: - outputs_files_folder = outputs_folder - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - else: - print('no outputs file provided!!!') - - if "gaps" in kwargs: - gaps = kwargs["gaps"] - - if "machine" in kwargs: - machine = kwargs["machine"] - display = 0 - - # paths - if machine == 'BORLAP020': - RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - elif machine == 'bruclu': - display = 0 - RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - elif machine == 'HPCBSC': - display = 0 - RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - - # Fixed variables - SourceDirectory = source_folder_folder - VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) - RTMVdbName = RTM_base_name + '.vdb' - SourceVdbRTMFilePath = os.path.abspath(os.path.join(SourceDirectory, RTMVdbName)) - VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) - lpermfile = os.path.abspath(os.path.join(SourceDirectory, RTM_lperm_file)) - - MacroRTMList = [] - - # Copy files to destination folder - import shutil - print(100 * '-') - print('Copying to folder {}'.format(outputs_files_folder)) - print(100 * '-') - shutil.copy(SourceVdbRTMFilePath, outputs_files_folder) - - # Internal info - VariablesDict = {} - VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath - VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath - VariablesDict['RTMSolverPath'] = RTMSolverPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - VariablesDict['lpermfile'] = lpermfile - - # Default values - VariablesDict['K11'] = 1e-9 - VariablesDict['K22'] = 1.22e-10 - VariablesDict['K33'] = 1.33e-11 - VariablesDict['Shrinkage'] = float(-.01) - VariablesDict['Viscosity'] = 0.2 - VariablesDict['Injection_pressure'] = 500000 - VariablesDict['Injection_temperature'] = 280 - - # Modified values - if "DoE_line" in kwargs: - if 'Injection_pressure' in kwargs['DoE_line']: - MacroRTMList.append('07_RTMApplyPressure.py') - VariablesDict['Injection_pressure'] = kwargs['DoE_line']['Injection_pressure'] - if 'Injection_temperature' in kwargs['DoE_line']: - MacroRTMList.append('07_RTMApplyTemperature.py') - VariablesDict['Injection_temperature'] = kwargs['DoE_line']['Injection_temperature'] - - RTM_parameters_list = ['Injection_pressure', 'Injection_temperature', 'Injection flow_rate'] - - MacroRTMList.append('08_RTMWriteSolverInput.py') - - # PAM-RTM uses its own python instance. A txt file is used to send it the required information - # notes: - # variables txt file must be in the same folder as the scripts - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - - # %% RTM - # Initialize application class from input data - RTMmodel = Visual_API() - RTMmodel.FileName = RTM_base_name - RTMmodel.SourceFilesPath = SourceDirectory - RTMmodel.solverPath = RTMSolverPath - RTMmodel.solverVEPath = RTMsolverVEPath - RTMmodel.basefolder = outputs_files_folder - RTMmodel.RTMbasefolder = outputs_files_folder - RTMmodel.inputFile = VdbRTMFilePath - RTMmodel.VariablesTxtPath = VariablesTxtPath - RTMmodel.simtype = 'RTM' - RTMmodel.machine = machine - OutputfileName = RTM_base_name + '.out' - RTMmodel.outputFile = os.path.join(outputs_files_folder, OutputfileName) - RTMmodel.display = display - RTMmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - RTMmodel.nt = 2 # Number of threads - RTMmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - RTMmodel.np = 16 # Number of processes - # Execute macros - for elem in MacroRTMList: - RTMmodel.LaunchMacro(elem) - # Run - RTMmodel.solveStep(runInBackground=False) - - return "PAM_RTMf finished" +""" +ESI Group +SMO +""" +import os +from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API +from pycompss.api.task import task +from pycompss.api.constraint import constraint +from pycompss.api.parameter import * +from pycompss.api.multinode import multinode + +@constraint(computing_units=16) +@multinode(computing_nodes=1) +@task(inputs_folder=DIRECTORY_IN, outputs_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, returns=1) +def run(RTM_base_name,inputs_folder, outputs_folder, source_folder, **kwargs): + ''' + This function assumes that parameter names and its values are provided in kwargs + The function check if some of the parameter names corresponds to this simulation and + modifies the default value. Then, it launches the simulation + ''' + print('_____________________________________________________________________________________') + print('Starting filling simulation') + + # for item in kwargs: + # print(item) + + # RTM_base_name = 'Lk_RTM_40' + RTM_lperm_file = RTM_base_name + '_modif.lperm' + # Visual will read the variables values from a txt file that is written at the end of this section + if source_folder: + source_folder_folder =source_folder + + if inputs_folder: + input_files_folder = inputs_folder + + if outputs_folder: + outputs_files_folder = outputs_folder + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + print("Folder '{}' created.".format(outputs_files_folder)) + else: + print("Folder '{}' already exists.".format(outputs_files_folder)) + else: + print('no outputs file provided!!!') + + if "gaps" in kwargs: + gaps = kwargs["gaps"] + + if "machine" in kwargs: + machine = kwargs["machine"] + display = 0 + + # paths + if machine == 'BORLAP020': + RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + elif machine == 'bruclu': + display = 0 + RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + elif machine == 'HPCBSC': + display = 0 + RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + + # Fixed variables + SourceDirectory = source_folder_folder + VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) + RTMVdbName = RTM_base_name + '.vdb' + SourceVdbRTMFilePath = os.path.abspath(os.path.join(SourceDirectory, RTMVdbName)) + VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) + lpermfile = os.path.abspath(os.path.join(SourceDirectory, RTM_lperm_file)) + + MacroRTMList = [] + + # Copy files to destination folder + import shutil + print(100 * '-') + print('Copying to folder {}'.format(outputs_files_folder)) + print(100 * '-') + shutil.copy(SourceVdbRTMFilePath, outputs_files_folder) + + # Internal info + VariablesDict = {} + VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath + VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath + VariablesDict['RTMSolverPath'] = RTMSolverPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + VariablesDict['lpermfile'] = lpermfile + + # Default values + VariablesDict['K11'] = 1e-9 + VariablesDict['K22'] = 1.22e-10 + VariablesDict['K33'] = 1.33e-11 + VariablesDict['Shrinkage'] = float(-.01) + VariablesDict['Viscosity'] = 0.2 + VariablesDict['Injection_pressure'] = 500000 + VariablesDict['Injection_temperature'] = 280 + + # Modified values + if "DoE_line" in kwargs: + if 'Injection_pressure' in kwargs['DoE_line']: + MacroRTMList.append('07_RTMApplyPressure.py') + VariablesDict['Injection_pressure'] = kwargs['DoE_line']['Injection_pressure'] + if 'Injection_temperature' in kwargs['DoE_line']: + MacroRTMList.append('07_RTMApplyTemperature.py') + VariablesDict['Injection_temperature'] = kwargs['DoE_line']['Injection_temperature'] + + RTM_parameters_list = ['Injection_pressure', 'Injection_temperature', 'Injection flow_rate'] + + MacroRTMList.append('08_RTMWriteSolverInput.py') + + # PAM-RTM uses its own python instance. A txt file is used to send it the required information + # notes: + # variables txt file must be in the same folder as the scripts + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + + # %% RTM + # Initialize application class from input data + RTMmodel = Visual_API() + RTMmodel.FileName = RTM_base_name + RTMmodel.SourceFilesPath = SourceDirectory + RTMmodel.solverPath = RTMSolverPath + RTMmodel.solverVEPath = RTMsolverVEPath + RTMmodel.basefolder = outputs_files_folder + RTMmodel.RTMbasefolder = outputs_files_folder + RTMmodel.inputFile = VdbRTMFilePath + RTMmodel.VariablesTxtPath = VariablesTxtPath + RTMmodel.simtype = 'RTM' + RTMmodel.machine = machine + OutputfileName = RTM_base_name + '.out' + RTMmodel.outputFile = os.path.join(outputs_files_folder, OutputfileName) + RTMmodel.display = display + RTMmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + RTMmodel.nt = 2 # Number of threads + RTMmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + RTMmodel.np = 16 # Number of processes + # Execute macros + for elem in MacroRTMList: + RTMmodel.LaunchMacro(elem) + # Run + RTMmodel.solveStep(runInBackground=False) + if RTMmodel.isSolved(): + print("PAM-RTM simulation completed successfully.") + return "PAM_RTMf finished" + else: + print("ERROR: PAM-RTM simulation failed or did not complete.") + return "PAM_RTMf failed" diff --git a/PHASES/AUTOMATION_ML/utils/07_RTMApplyPressure.py b/PHASES/AUTOMATION_ML/utils/07_RTMApplyPressure.py index 039b208..69ec004 100644 --- a/PHASES/AUTOMATION_ML/utils/07_RTMApplyPressure.py +++ b/PHASES/AUTOMATION_ML/utils/07_RTMApplyPressure.py @@ -1,87 +1,87 @@ -# -*- coding: utf-8 -*- -""" -Created on Fri Jan 20 11:48:17 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Fri Jan 20 11:41:54 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) -import os -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbRTMFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbFilePath = linesplit[2] - if 'Injection_pressure' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - Pressure = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) - -VCmd.SetStringValue( var1, r"DisplayMode", r"Flat and Wireframe" ) -#__________________ BoundaryConditions BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) -VCmd.SetStringValue( var4, r"ActiveBcType", r"Pressure" ) -VCmd.SetStringValue( var4, r"ActiveBcName", r"Pressure_1" ) -VCmd.SetGuStringValue( var4, r"OpeningMode", r"Edit" ) -VCmd.SetStringValue( var4, r"ActiveBcParam", r"Pressure" ) -VCmd.SetDoubleValue( var4, r"ParamDoubleValue", float(Pressure) ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) -#__________________ UserDefineRegionChild END __________________ -VExpMngr.ExportFile( VdbFilePath, 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) +# -*- coding: utf-8 -*- +""" +Created on Fri Jan 20 11:48:17 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Fri Jan 20 11:41:54 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) +import os +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbRTMFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbFilePath = linesplit[2] + if 'Injection_pressure' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + Pressure = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) + +VCmd.SetStringValue( var1, r"DisplayMode", r"Flat and Wireframe" ) +#__________________ BoundaryConditions BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) +VCmd.SetStringValue( var4, r"ActiveBcType", r"Pressure" ) +VCmd.SetStringValue( var4, r"ActiveBcName", r"Pressure_1" ) +VCmd.SetGuStringValue( var4, r"OpeningMode", r"Edit" ) +VCmd.SetStringValue( var4, r"ActiveBcParam", r"Pressure" ) +VCmd.SetDoubleValue( var4, r"ParamDoubleValue", float(Pressure) ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) +#__________________ UserDefineRegionChild END __________________ +VExpMngr.ExportFile( VdbFilePath, 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) # VE.NewSession( ) \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/utils/07_RTMApplyTemperature.py b/PHASES/AUTOMATION_ML/utils/07_RTMApplyTemperature.py index ee9acc5..213a917 100644 --- a/PHASES/AUTOMATION_ML/utils/07_RTMApplyTemperature.py +++ b/PHASES/AUTOMATION_ML/utils/07_RTMApplyTemperature.py @@ -1,87 +1,87 @@ -# -*- coding: utf-8 -*- -""" -Created on Fri Jan 20 11:48:17 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Fri Jan 20 11:41:54 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) -import os -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbRTMFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbFilePath = linesplit[2] - if 'Injection_temperature' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - Temperature = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) - -VCmd.SetStringValue( var1, r"DisplayMode", r"Flat and Wireframe" ) -#__________________ BoundaryConditions BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) -VCmd.SetStringValue( var4, r"ActiveBcType", r"Pressure" ) -VCmd.SetStringValue( var4, r"ActiveBcName", r"Pressure_1" ) -VCmd.SetGuStringValue( var4, r"OpeningMode", r"Edit" ) -VCmd.SetStringValue( var4, r"ActiveBcParam", r"temperatureValue" ) -VCmd.SetDoubleValue( var4, r"ParamDoubleValue", float(Temperature) ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) -#__________________ UserDefineRegionChild END __________________ -VExpMngr.ExportFile( VdbFilePath, 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) +# -*- coding: utf-8 -*- +""" +Created on Fri Jan 20 11:48:17 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Fri Jan 20 11:41:54 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) +import os +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbRTMFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbFilePath = linesplit[2] + if 'Injection_temperature' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + Temperature = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) + +VCmd.SetStringValue( var1, r"DisplayMode", r"Flat and Wireframe" ) +#__________________ BoundaryConditions BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) +VCmd.SetStringValue( var4, r"ActiveBcType", r"Pressure" ) +VCmd.SetStringValue( var4, r"ActiveBcName", r"Pressure_1" ) +VCmd.SetGuStringValue( var4, r"OpeningMode", r"Edit" ) +VCmd.SetStringValue( var4, r"ActiveBcParam", r"temperatureValue" ) +VCmd.SetDoubleValue( var4, r"ParamDoubleValue", float(Temperature) ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) +#__________________ UserDefineRegionChild END __________________ +VExpMngr.ExportFile( VdbFilePath, 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) # VE.NewSession( ) \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/utils/08_RTMWriteSolverInput.py b/PHASES/AUTOMATION_ML/utils/08_RTMWriteSolverInput.py index d92c8ec..4c077fe 100644 --- a/PHASES/AUTOMATION_ML/utils/08_RTMWriteSolverInput.py +++ b/PHASES/AUTOMATION_ML/utils/08_RTMWriteSolverInput.py @@ -1,81 +1,81 @@ -# -*- coding: utf-8 -*- -""" -Created on Fri Jan 20 12:30:07 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Fri Jan 20 12:10:21 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) - -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) -import os - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbRTMFilePath' in line: - linesplit = line.partition('= ') - VdbFilePath = linesplit[2] - if 'outputs_files_folder' in line: - linesplit = line.partition('= ') - new_working_directory = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) -#__________________ SolverManager BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) -ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) -VCmd.Quit( var4 ) -#__________________ SolverManager END __________________ -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Fri Jan 20 12:30:07 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Fri Jan 20 12:10:21 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) + +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) +import os + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbRTMFilePath' in line: + linesplit = line.partition('= ') + VdbFilePath = linesplit[2] + if 'outputs_files_folder' in line: + linesplit = line.partition('= ') + new_working_directory = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) +#__________________ SolverManager BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) +ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) +VCmd.Quit( var4 ) +#__________________ SolverManager END __________________ +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/11b_Import_lperm_file.py b/PHASES/AUTOMATION_ML/utils/11b_Import_lperm_file.py index df9f649..378dd01 100644 --- a/PHASES/AUTOMATION_ML/utils/11b_Import_lperm_file.py +++ b/PHASES/AUTOMATION_ML/utils/11b_Import_lperm_file.py @@ -1,77 +1,77 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Feb 22 09:42:22 2024 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Feb 22 09:38:45 2024 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) - -import os -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbRTMFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbRTMFilePath = linesplit[2] - if 'lpermfile' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - lpermfile = linesplit[2] - -ret=VExpMngr.LoadFile(VdbRTMFilePath,0) -ret=VE.ModelChange( "M @0" ) - -#__________________ ImportExportLocalProperties BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"ImportExportLocalProperties" ) -VCmd.SetGuStringValue( var4, r"ImportFileName", lpermfile ) -ret=VCmd.ExecuteCommand( var4, r"ImportLocalResults" ) - +# -*- coding: utf-8 -*- +""" +Created on Thu Feb 22 09:42:22 2024 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Feb 22 09:38:45 2024 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) + +import os +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbRTMFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbRTMFilePath = linesplit[2] + if 'lpermfile' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + lpermfile = linesplit[2] + +ret=VExpMngr.LoadFile(VdbRTMFilePath,0) +ret=VE.ModelChange( "M @0" ) + +#__________________ ImportExportLocalProperties BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"ImportExportLocalProperties" ) +VCmd.SetGuStringValue( var4, r"ImportFileName", lpermfile ) +ret=VCmd.ExecuteCommand( var4, r"ImportLocalResults" ) + VExpMngr.ExportFile( VdbRTMFilePath, 0 ) \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/utils/22_CuringMappingTempFillFactCureDegree.py b/PHASES/AUTOMATION_ML/utils/22_CuringMappingTempFillFactCureDegree.py index 5776123..1df9066 100644 --- a/PHASES/AUTOMATION_ML/utils/22_CuringMappingTempFillFactCureDegree.py +++ b/PHASES/AUTOMATION_ML/utils/22_CuringMappingTempFillFactCureDegree.py @@ -1,97 +1,97 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Feb 2 14:06:07 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Feb 2 13:52:43 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -import os - -print(100*'-') -print('Curing mapping temp from filling 22') - -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbCuringFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbFilePath = linesplit[2] - if 'RTMunfFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - L_RTMgUnfFile = linesplit[2] - - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) -#__________________ Extract BEGIN __________________ -var4=VCmd.Activate( 1, r"VCastUtilities.VCastInterface", r"Extract" ) -VCmd.SetStringValue( var4, r"ExtractMethod", r"Extract" ) -VCmd.SetStringValue( var4, r"StepType", r"Step" ) -lst1_count,lst1 = VScn.List( " P 10001:10004 " ) -VCmd.SetObjectArrayValue( var4, r"Parts", lst1_count, lst1 ) -VCmd.SetStringValue( var4, r"ResultFile", L_RTMgUnfFile ) -VCmd.SetStringValue( var4, r"ExtractMethod", r"Mapping" ) -VCmd.SetStringValue( var4, r"StepType", r"Step" ) -VCmd.SetStringValue( var4, r"StepType", r"Step" ) -VCmd.SetIntValue( var4, r"Step", 451 ) -ret=VCmd.ExecuteCommand( var4, r"Mapping" ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) -#__________________ Extract END __________________ -VExpMngr.ExportFile( VdbFilePath, 0 ) -ret=VE.ModelDestroy( "M @0" ) -VE.SetCurrentPage( 1 ) -VE.SetActiveWindow( r"p1w1" ) -VE.NewSession( ) - +# -*- coding: utf-8 -*- +""" +Created on Thu Feb 2 14:06:07 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Feb 2 13:52:43 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +import os + +print(100*'-') +print('Curing mapping temp from filling 22') + +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbCuringFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbFilePath = linesplit[2] + if 'RTMunfFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + L_RTMgUnfFile = linesplit[2] + + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) +#__________________ Extract BEGIN __________________ +var4=VCmd.Activate( 1, r"VCastUtilities.VCastInterface", r"Extract" ) +VCmd.SetStringValue( var4, r"ExtractMethod", r"Extract" ) +VCmd.SetStringValue( var4, r"StepType", r"Step" ) +lst1_count,lst1 = VScn.List( " P 10001:10004 " ) +VCmd.SetObjectArrayValue( var4, r"Parts", lst1_count, lst1 ) +VCmd.SetStringValue( var4, r"ResultFile", L_RTMgUnfFile ) +VCmd.SetStringValue( var4, r"ExtractMethod", r"Mapping" ) +VCmd.SetStringValue( var4, r"StepType", r"Step" ) +VCmd.SetStringValue( var4, r"StepType", r"Step" ) +VCmd.SetIntValue( var4, r"Step", 451 ) +ret=VCmd.ExecuteCommand( var4, r"Mapping" ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) +#__________________ Extract END __________________ +VExpMngr.ExportFile( VdbFilePath, 0 ) +ret=VE.ModelDestroy( "M @0" ) +VE.SetCurrentPage( 1 ) +VE.SetActiveWindow( r"p1w1" ) +VE.NewSession( ) + diff --git a/PHASES/AUTOMATION_ML/utils/23_CuringSetTemperature.py b/PHASES/AUTOMATION_ML/utils/23_CuringSetTemperature.py index 9110c54..3bf9776 100644 --- a/PHASES/AUTOMATION_ML/utils/23_CuringSetTemperature.py +++ b/PHASES/AUTOMATION_ML/utils/23_CuringSetTemperature.py @@ -1,739 +1,739 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Feb 2 14:48:16 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Feb 2 14:11:07 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -import os - -print(100 * '-') -print('Curing set temperature 23') - -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbCuringFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbFilePath = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) - -lst1_count,lst1 = VScn.List( " CAST_BC @0 " ) -VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) -#__________________ BoundaryConditions BEGIN __________________ -var5=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) -VCmd.SetStringValue( var5, r"ActiveBcType", r"Temperature" ) -VCmd.SetGuStringValue( var5, r"OpeningMode", r"CreateSpecificType" ) -ret=VCmd.ExecuteCommand( var5, r"CreateNew" ) -VCmd.SetStringValue( var5, r"BcName", r"Temperature_1" ) -VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"ParamValue", r"F(t)" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateCurve" ) -VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) -VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) -VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) -VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) -VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) -lst1_count,lst1 = VScn.Point2List( " 0. 393.1499938964844 | \ -2400. 433.1499938964844 | \ -9600. 433.1499938964844 | \ -15000. 298.1499938964844 | \ -18000. 298.1499938964844 | \ - " ) -VCmd.SetPoint2ArrayValue( var5, r"PropertyTValue", lst1_count, lst1 ) -#__________________ UserDefineRegionChild BEGIN __________________ -var7=VCmd.ActivateChild( var5, var5, r"UserDefineRegionChild" ) -VCmd.SetStringValue( var7, r"Type", r"Node" ) -VCmd.SetIntValue( var1, r"Visible Selection", 1 ) -VCmd.SetIntValue( var7, r"ModifyMode", 0 ) -VCmd.SetStringValue( var7, r"Name", r"Temperature_1" ) -VCmd.SetStringValue( var7, r"Type", r"Element face" ) -VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) -lst1_count,lst1 = VScn.List( " S 24484 24492 24496 24502 24508 24514 24522 24528 24534 24540 24546 24552 24591:24592 \ - 24595 24633:24634 24639:24640 24652 24681:24682 24687 24702:24703 \ - 24724 24727 24732 24751 24756:24757 24786:24787 24792 24795 24904 24907 24910 24915:24916 \ - 24967 24972:24973 25003 25008:25009 25026 25074:25075 \ - 25080 25099 25104 25123 25128 25165 25170:25171 25176 25195 25200 25228 25233:25234 \ - 25257:25258 25306 25311 25314:25315 25320 25330 25398:25399 \ - 25402 25405 25410:25411 25416 25462 25465 25468 25471 25476 25515:25516 \ - 25521:25522 25572:25573 25578:25579 25582 25605:25606 \ - 25629:25630 25696 25701 25704:25705 25708 25713:25714 \ - 25746:25747 25752 25798 25803:25804 25809:25810 25833:25834 \ - 25891 25896:25897 25902:25903 25908 25974:25975 25978 25981 25986:25987 \ - 25992 26013:26014 26071 26074 26079:26080 26083 26088 26098 26128 26131 26134 26155 26160 26208:26209 \ - 26214:26215 26220 26239 26242 26265:26266 26289:26290 \ - 26356 26361:26362 26365 26370 26373:26374 26406:26407 \ - 26412 26451:26452 26455 26460 26506 26511:26512 26517:26518 \ - 26541:26542 26556 26595:26596 26599 26604 26623 26628 26712:26713 \ - 26716 26721:26722 26725 26730:26731 26736 26757:26758 \ - 26842 26845 26850:26851 26856:26857 26860 26865:26866 \ - 26914 26917 26920 26923 26928 26949 26952 27018:27019 \ - 27024:27025 27028 27031 27036 27057 27060 27090:27091 \ - 27094 27117:27118 27202 27207 27210:27211 27214 27219:27220 \ - 27225:27226 27267:27268 27271 27276 27313 27318:27319 \ - 27324 27388 27393:27394 27399:27400 27403 27406 27418 27459:27460 \ - 27463 27468 27487 27492 27576:27577 27580 27585:27586 \ - 27589 27594:27595 27600 27621:27622 27645:27646 27703 27708 27711:27712 \ - 27717:27718 27777:27778 27783:27784 27789 27792 27856 27859 27862 27867:27868 \ - 27871 27874 27897:27898 27966:27967 27972:27973 27978:27979 \ - 27984 28012 28017 28020 28030 28080:28081 28084 28087 28092 28113:28114 \ - 28135 28140 28204 28209:28210 28215:28216 28221:28222 \ - 28254:28255 28258 28299:28300 28303 28308 28345 28350 28353:28354 \ - 28429 28434:28435 28440:28441 28444 28447 28452 28464 28485:28486 \ - 28507 28512 28531 28536 28620:28621 28624 28629:28630 \ - 28633 28638:28639 28644 28665:28666 28689:28690 28713:28714 \ - 28771 28776:28777 28782 28785:28786 28872:28873 28876 28881:28882 \ - 28887:28888 28893:28894 28980:28981 28986:28987 28990 28995:28996 \ - 29001:29002 29016 29082:29083 29088:29089 29094:29095 \ - 29098 29119 29122 29161 29166:29167 29172 29238:29239 \ - 29242 29245 29250:29251 29256 29277:29278 29299 29304 29368 29373:29374 \ - 29379:29380 29385:29386 29418:29419 29422 29463:29464 \ - 29467 29470 29511:29512 29515 29520 29541:29542 29563 29568 29623 29628:29629 \ - 29632 29635 29638 29679:29680 29683 29688 29709:29710 \ - 29733:29734 29755 29760 29844:29845 29848 29853:29854 \ - 29857 29862:29863 29868 29889:29890 29913:29914 29937:29938 \ - 29961:29962 30019 30022 30025 30030:30031 30036 30138:30139 \ - 30142 30147:30148 30153:30154 30159:30160 30165:30166 \ - 30189:30190 30256 30261:30262 30267:30268 30273:30274 \ - 30286 30354:30355 30360:30361 30366:30367 30372 30391 30396 30406 30445 30448 30453:30454 \ - 30540:30541 30544 30547 30552:30553 30558:30559 30562 30585:30586 \ - 30607 30612 30676 30681:30682 30687:30688 30693:30694 \ - 30706 30756:30757 30760 30765 30768 30807:30808 30811 30816 30837:30838 \ - 30861:30862 30883 30888 30907 30912 30976 30981:30982 \ - 30985 30988 30993:30994 31033 31038:31039 31044 31065:31066 \ - 31087 31092 31111 31116 31200:31201 31204 31209:31210 \ - 31213 31218:31219 31224 31245:31246 31269:31270 31293:31294 \ - 31317:31318 31341:31342 31399 31402 31407:31408 31411 31414 31464:31465 \ - 31470:31471 31476 31540 31545:31546 31551:31552 31557:31558 \ - 31581:31582 31603 31608 31683:31684 31689:31690 31695:31696 \ - 31699 31704 31770:31771 31776:31777 31782:31783 31788 31807 31812 31822 31863:31864 \ - 31867 31872 31954 31957 31962:31963 31968:31969 31972 31977:31978 \ - 32001:32002 32025:32026 32047 32052 32116 32121:32122 \ - 32127:32128 32133:32134 32155 32160 32226:32227 32230 32235:32236 \ - 32241:32242 32283:32284 32287 32292 32313:32314 32337:32338 \ - 32359 32364 32383 32388 32452 32455 32460 32463:32464 \ - 32467 32472 32491 32496 32533 32538:32539 32544 32565:32566 \ - 32587 32590 32613:32614 32700:32701 32704 32709:32710 \ - 32713 32718:32719 32724 32745:32746 32769:32770 32793:32794 \ - 32817:32818 32841:32842 32865:32866 32923 32928 32931:32932 \ - 32937:32938 32979:32980 32983 32986 33007 33010 33094 33099:33100 \ - 33105:33106 33111:33112 33115 33120 33139 33142 33163 33168 33243:33244 \ - 33249:33250 33253 33258:33259 33264 33330:33331 33336:33337 \ - 33342:33343 33348 33367 33372 33391 33394 33435:33436 \ - 33441:33442 33526 33531 33534:33535 33538 33543:33544 \ - 33549:33550 33571 33574 33597:33598 33621:33622 33643 33648 33712 33715 33718 33721 33724 33729:33730 \ - 33753 33756 33768 33850 33853 33858:33859 33862 33867:33868 \ - 33873:33874 33897:33898 33921:33922 33945:33946 33967 33972 33991 33996 34015 34020 34095:34096 \ - 34099 34102 34105 34110:34111 34116 34135 34140 34177 34182:34183 \ - 34188 34207 34212 34231 34236 34255 34260 34344:34345 \ - 34348 34353:34354 34357 34362:34363 34368 34389:34390 \ - 34413:34414 34437:34438 34461:34462 34485:34486 34509:34510 \ - 34533:34534 34591 34594 34597 34600 34605:34606 34647:34648 \ - 34653:34654 34675 34680 34764:34765 34768 34773:34774 \ - 34779:34780 34785:34786 34807 34812 34833:34834 34855 34860 34935:34936 \ - 34939 34944:34945 34950:34951 34956 35022:35023 35028:35029 \ - 35034:35035 35040 35059 35062 35083 35086 35109 35112 35151:35152 \ - 35155 35160 35242 35247:35248 35253:35254 35259:35260 \ - 35265:35266 35287 35292 35311 35314 35337:35338 35361:35362 \ - 35383 35386 35454:35455 35460:35461 35466:35467 35470 35493 35496 35517:35518 \ - 35604:35605 35608 35613:35614 35619:35620 35625:35626 \ - 35649:35650 35673:35674 35697:35698 35721:35722 35743 35748 35767 35772 35791 35794 35842 35845 35848 35851 35854 35893 35898:35899 \ - 35904 35923 35928 35965 35970:35971 35976 35995 36000 36019 36024 36043 36046 36132:36133 \ - 36136 36141:36142 36145 36148 36153:36154 36177:36178 \ - 36201:36202 36225:36226 36249:36250 36273:36274 36297:36298 \ - 36321:36322 36345:36346 36405:36406 36411:36412 36417:36418 \ - 36468 36471 36474:36475 36478 36499 36504 36588:36589 \ - 36592 36595 36600:36601 36604 36609:36610 36633:36634 \ - 36655 36660 36681:36682 36703 36708 36781 36786:36787 \ - 36792:36793 36798:36799 36804 36870:36871 36876:36877 \ - 36882:36883 36888 36907 36912 36933 36936 36946 36967 36970 37011:37012 \ - 37015 37020 37104:37105 37108 37113:37114 37119:37120 \ - 37125:37126 37147 37152 37171 37176 37195 37198 37221:37222 \ - 37245:37246 37269:37270 37338:37339 37344:37345 37350:37351 \ - 37356 37377:37378 37392 37413:37414 37500:37501 37504 37509:37510 \ - 37515:37516 37521:37522 37543 37548 37567 37570 37593:37594 \ - 37617:37618 37641:37642 37665:37666 37687 37690 37713:37714 \ - 37773:37774 37779 37782:37783 37788 37825 37830:37831 \ - 37836 37855 37860 37897 37902:37903 37908 37927 37932 37951 37954 37977:37978 \ - 38064:38065 38068 38073:38074 38077 38080 38085:38086 \ - 38109:38110 38133:38134 38157:38158 38181:38182 38205:38206 \ - 38229:38230 38253:38254 38277:38278 38301:38302 38361:38362 \ - 38365 38370 38373:38374 38433:38434 38439:38440 38443 38446 38467 38472 38556:38557 \ - 38560 38565:38566 38571:38572 38577:38578 38601:38602 \ - 38625:38626 38647 38652 38671 38676 38695 38700 38773 38778:38779 \ - 38784:38785 38790:38791 38796 38862:38863 38868:38869 \ - 38874:38875 38880 38899 38904 38925:38926 38940 38959 38962 39003:39004 \ - 39007 39010 39096:39097 39100 39105:39106 39111:39112 \ - 39117:39118 39141:39142 39163 39168 39187 39192 39211 39216 39235 39240 39259 39262 39285:39286 \ - 39354:39355 39360:39361 39366:39367 39372 39391 39396 39417:39418 \ - 39441:39442 39528:39529 39532 39537:39538 39543:39544 \ - 39549:39550 39573:39574 39597:39598 39621:39622 39645:39646 \ - 39669:39670 39693:39694 39715 39720 39741:39742 39765:39766 \ - 39816:39817 39822:39823 39826 39847 39852 39889 39894:39895 \ - 39900 39919 39924 39961 39966:39967 39972 39991 39994 40017:40018 \ - 40041:40042 40128:40129 40132 40137:40138 40141 40146:40147 \ - 40152 40173:40174 40197:40198 40221:40222 40245:40246 \ - 40269:40270 40293:40294 40317:40318 40341:40342 40365:40366 \ - 40389:40390 40447 40450 40455:40456 40459 40462 40512:40513 \ - 40518 40521:40522 40543 40548 40567 40572 40654 40659:40660 \ - 40665:40666 40671:40672 40675 40680 40699 40702 40725:40726 \ - 40749:40750 40771 40776 40795 40800 40819 40824 40897 40902:40903 \ - 40908:40909 40914:40915 40920 40986:40987 40992:40993 \ - 40998:40999 41004 41023 41028 41047 41052 41073:41074 \ - 41097:41098 41139:41140 41143 41146 41232:41233 41236 41241:41242 \ - 41247:41248 41253:41254 41277:41278 41301:41302 41323 41328 41347 41352 41371 41376 41395 41398 41421:41422 \ - 41445:41446 41514:41515 41520:41521 41526:41527 41532 41551 41556 41577 41580 41601 41604 41625:41626 \ - 41712:41713 41716 41721:41722 41727:41728 41733:41734 \ - 41757:41758 41781:41782 41803 41808 41827 41830 41853:41854 \ - 41877:41878 41901:41902 41923 41926 41949:41950 41973:41974 \ - 42033:42034 42039:42040 42043 42046 42067 42072 42109 42114:42115 \ - 42120 42139 42144 42181 42186:42187 42192 42213:42214 \ - 42237:42238 42261:42262 42346 42351 42354:42355 42360:42361 \ - 42366:42367 42372 42391 42396 42415 42420 42439 42444 42463 42468 42487 42492 42511 42516 42535 42540 42559 42564 42583 42588 42607 42612 42631 42636 42691 42696 42699:42700 \ - 42705:42706 42774:42775 42780:42781 42784 42787 42790 42811 42816 42835 42840 42924:42925 \ - 42928 42933:42934 42937 42942:42943 42948 42969:42970 \ - 42993:42994 43017:43018 43041:43042 43063 43068 43087 43092 43111 43116 43189 43194:43195 \ - 43200:43201 43206:43207 43212 43276 43281 43284:43285 \ - 43290:43291 43296 43315 43320 43339 43344 43363 43368 43380 43401:43402 \ - 43443:43444 43447 43450 43536:43537 43540 43545:43546 \ - 43551:43552 43557:43558 43581:43582 43605:43606 43629:43630 \ - 43651 43656 43675 43680 43699 43702 43725:43726 43749:43750 \ - 43773:43774 43842:43843 43848:43849 43854:43855 43860 43879 43884 43905 43908 43920 43939 43942 43965:43966 \ - 44052:44053 44056 44061:44062 44067:44068 44073:44074 \ - 44097:44098 44121:44122 44145:44146 44169:44170 44191 44196 44215 44220 44239 44244 44263 44266 44289:44290 \ - 44313:44314 44337:44338 44406:44407 44412:44413 44416 44419 44424 44443 44448 44485 44490:44491 \ - 44496 44515 44520 44557 44562:44563 44568 44589:44590 \ - 44613:44614 44637:44638 44677 44682 44685:44686 44745:44746 \ - 44749 44752 44757:44758 44779 44782 44803 44808 44827 44832 44914 44917 44922 44925:44926 \ - 44931:44932 44937:44938 44959 44964 44985:44986 45007 45010 45031 45036 45055 45060 45081:45082 \ - 45105:45106 45127 45132 45207:45208 45213:45214 45219:45220 \ - 45225:45226 45274 45279 45282:45283 45288 45307 45312 45331 45336 45357 45360 45381:45382 \ - 45405:45406 45447:45448 45451 45456 45538 45543 45546:45547 \ - 45552:45553 45558:45559 45564 45583 45588 45607 45612 45631 45636 45655 45660 45679 45684 45703 45708 45727 45732 45751 45756 45775 45780 45801:45802 \ - 45870:45871 45876:45877 45882:45883 45888 45907 45912 45931 45936 45948 45969:45970 \ - 45993:45994 46080:46081 46084 46089:46090 46095:46096 \ - 46101:46102 46125:46126 46149:46150 46173:46174 46197:46198 \ - 46219 46224 46243 46248 46267 46272 46291 46294 46317:46318 \ - 46341:46342 46363 46368 46387 46392 46449:46450 46455:46456 \ - 46461 46464 46483 46488 46507 46512 46549 46554:46555 \ - 46560 46579 46584 46621 46626:46627 46632 46653:46654 \ - 46677:46678 46701:46702 46723 46728 46783 46788 46791:46792 \ - 46797:46798 46819 46824 46843 46848 46869:46870 47193:47194 \ - 47320 47325 47328 47347 47352 47371 47376 47397:47398 \ - 47421:47422 47443 47448 47467 47470 47509 47514:47515 \ - 47520 47539 47544 47608 47613 47616:47617 47622:47623 \ - 47628 47647 47652 47671 47676 47697 47700 47721:47722 \ - 47745:47746 47832:47833 47836 47841:47842 47847:47848 \ - 47853:47854 47877:47878 47901:47902 47925:47926 47949:47950 \ - 47973:47974 47995 48000 48019 48024 48043 48046 48069:48070 \ - 48093:48094 48117:48118 48186:48187 48192:48193 48198:48199 \ - 48202 48223 48226 48247 48252 48289 48294:48295 48300 48319 48324 48363:48364 \ - 48369:48370 48393:48394 48417:48418 48441:48442 48490 48495:48496 \ - 48499 48502 48523 48528 48549:48550 48658 48663 48666:48667 \ - 48672:48673 48678:48679 48684 48703 48706 48729:48730 \ - 48753:48754 48775 48780 48799 48802 48825:48826 48849:48850 \ - 48871 48876 48895 48900 48997 49002 49005:49006 49011:49012 \ - 49015 49020 49030 49053 49056 49075 49080 49099 49104 49114 49135 49138 49159 49164 49183 49188 49234 49239 49242:49243 \ - 49248 49267 49272 49291 49296 49315 49320 49330 49353:49354 \ - 49377:49378 49462 49467 49470:49471 49476:49477 49482:49483 \ - 49488 49507 49512 49531 49536 49555 49560 49579 49584 49603 49608 49627 49632 49651 49656 49675 49680 49699 49704 49723 49728 49747 49752 49771 49776 49842:49843 \ - 49848:49849 49852 49855 49858 49881:49882 49903 49906 49927 49932 49969 49974:49975 \ - 49980 50001:50002 50071 50076 50095 50100 50119 50124 50152 50157:50158 \ - 50179 50182 50205:50206 50251 50256 50320 50325 50328:50329 \ - 50334:50335 50340 50359 50364 50383 50388 50407 50410 50433:50434 \ - 50457:50458 50481:50482 50505:50506 50529:50530 50553:50554 \ - 50575 50580 50599 50604 50623 50628 50692 50697 50700:50701 \ - 50706:50707 50712 50722 50734 50757 50760 50779 50782 50794 50815 50818 50839 50844 50872 50877 50880 50899 50904 50925 50928 50949 50952 50971 50974 50997:50998 \ - 51019 51024 51088 51093 51096:51097 51102:51103 51106 51120 51141:51142 \ - 51163 51168 51187 51192 51231:51232 51237:51238 51301 51306:51307 \ - 51312 51322 51336 51355 51358 51412 51415 51418 51439 51444 51510 51513:51514 \ - 51519:51520 51525:51526 51549:51550 51573:51574 51597:51598 \ - 51619 51622 51643 51648 51667 51672 51693:51694 51715 51718 51739 51744 51763 51768 51789:51790 \ - 51813:51814 51835 51840 51906 51909:51910 51915:51916 \ - 51921:51922 51934 51946 51969 51972 51993 51996 52015 52020 52030 52053 52056 52075 52080 52101:52102 \ - 52116 52135 52138 52159 52164 52210 52215 52218:52219 \ - 52222 52236 52255 52260 52279 52284 52305:52306 52375 52380 52417 52422:52423 \ - 52428 52440 52471 52522 52527 52530 52533 52536 52557:52558 \ - 52644 52647:52648 52653:52654 52659:52660 52665:52666 \ - 52689:52690 52713:52714 52737:52738 52759 52762 52783 52788 52807 52812 52831 52836 52855 52860 52879 52884 52905:52906 \ - 52929:52930 52953:52954 52977:52978 53055 53058:53059 \ - 53062 53067:53068 53073:53074 53086 53107 53112 53131 53136 53146 53169 53172 53202:53203 \ - 53208 53220 53239 53244 53272 53277:53278 53299 53302 53323 53326 53349:53350 \ - 53422 53427:53428 53433 53455 53460 53499:53500 53505:53506 \ - 53538:53539 53542 53565 53568 53652 53655:53656 53661:53662 \ - 53667:53668 53673:53674 53697:53698 53721:53722 53745:53746 \ - 53769:53770 53791 53794 53815 53820 53839 53844 53865:53866 \ - 53887 53890 53911 53916 53935 53938 53970:53971 53976 53997:53998 \ - 54021:54022 54099 54102:54103 54108:54109 54112 54117:54118 \ - 54132 54142 54154 54175 54180 54217 54222:54223 54228 54238 54259 54262 54285:54286 \ - 54309:54310 54412 54417:54418 54423:54424 54429 54453:54454 \ - 54495:54496 54501:54502 54516 54528 54538 54606 54609:54610 \ - 54615:54616 54621:54622 54645:54646 54669:54670 54693:54694 \ - 54717:54718 54741:54742 54765:54766 54787 54790 54811 54816 54835 54840 54859 54864 54883 54888 54907 54912 54931 54936 54984:54985 \ - 54988 54991 54996 55017:55018 55041:55042 55110 55113:55114 \ - 55119:55120 55125:55126 55138 55152 55162 55174 55188 55209:55210 \ - 55320:55321 55324 55329:55330 55335:55336 55339 55365:55366 \ - 55407:55408 55413:55414 55482 55485:55486 55491:55492 \ - 55497:55498 55521:55522 55545:55546 55569:55570 55593:55594 \ - 55617:55618 55641:55642 55665:55666 55687 55690 55711 55716 55735 55740 55768 55771 55774 55795 55798 55810 55831 55834 55882 55887 55890:55891 \ - 55896 55917:55918 55941:55942 56010 56013:56014 56019:56020 \ - 56025:56026 56038 56050 56160:56161 56164 56167 56172 56175:56176 \ - 56181:56182 56203 56206 56227 56232 56271 56274:56275 \ - 56278 56346 56349:56350 56355:56356 56361:56362 56385:56386 \ - 56409:56410 56433:56434 56457:56458 56481:56482 56505:56506 \ - 56529:56530 56553:56554 56577:56578 56601:56602 56614 56664:56665 \ - 56670:56671 56676 56686 56707 56712 56740 56745 56748 56767 56772 56793:56794 \ - 56817:56818 56886 56889:56890 56895:56896 56901:56902 \ - 56914 57009 57012:57013 57018 57021 57024 57027 57030:57031 \ - 57036 57048 57067 57072 57111 57114:57115 57118 57186 57189:57190 \ - 57195:57196 57201:57202 57225:57226 57249:57250 57273:57274 \ - 57297:57298 57321:57322 57345:57346 57369:57370 57393:57394 \ - 57415 57418 57441:57442 57465:57466 57525:57526 57531:57532 \ - 57537:57538 57559 57564 57574 57597 57600 57619 57624 57645:57646 \ - 57669:57670 57738:57739 57744 57747:57748 57753:57754 \ - 57766 57805 57810:57811 57816 57880 57885 57888:57889 \ - 57892 57895 57900 57919 57922 57963 57966 57969:57970 \ - 58038 58041:58042 58047:58048 58053:58054 58077:58078 \ - 58101:58102 58125:58126 58149:58150 58173:58174 58197:58198 \ - 58221:58222 58245:58246 58269:58270 58293:58294 58317 58320 58339 58344 58399 58404:58405 \ - 58410:58411 58416 58435 58440 58450 58473 58476 58495 58500 58521:58522 \ - 58543 58548 58614 58617:58618 58623 58626 58629:58630 \ - 58642 58699 58704:58705 58708 58713:58714 58735 58740 58777 58782:58783 \ - 58788 58854 58857:58858 58863:58864 58869:58870 58893:58894 \ - 58917:58918 58941:58942 58965:58966 58989:58990 59013:59014 \ - 59037:59038 59061:59062 59085:59086 59107 59112 59124 59143 59148 59167 59172 59209 59214:59215 \ - 59220 59239 59244 59263 59268 59278 59301 59304 59323 59328 59349:59350 \ - 59371 59376 59433:59434 59439 59442 59445:59446 59458 59488 59493 59496 59515 59520 59539 59544 59581 59586:59587 \ - 59592 59658 59661:59662 59667:59668 59673:59674 59697:59698 \ - 59721:59722 59745:59746 59769:59770 59793:59794 59817:59818 \ - 59841:59842 59865:59866 59889 59892 59922:59923 59928 59938 59959 59964 59983 59988 60007 60012 60031 60036 60055 60060 60079 60084 60094 60117 60120 60139 60144 60163 60168 60187 60190 60247 60252:60253 \ - 60258 60261 60264 60274 60297 60300 60319 60324 60343 60348 60367 60372 60391 60396 60462 60465:60466 \ - 60471:60472 60477:60478 60501:60502 60525:60526 60549:60550 \ - 60573:60574 60597:60598 60621:60622 60645:60646 60669:60670 \ - 60693:60694 60715 60718 60757 60762:60763 60768 60787 60792 60811 60816 60835 60840 60859 60864 60883 60888 60907 60912 60922 60945 60948 60967 60972 60991 60996 61015 61020 61066 61071:61072 \ - 61077:61078 61090 61113:61114 61137 61140 61159 61162 61185:61186 \ - 61209 61212 61278 61281 61284 61287:61288 61293:61294 \ - 61317:61318 61341:61342 61365:61366 61389:61390 61413:61414 \ - 61437:61438 61459 61462 61485:61486 61509:61510 61524 61543 61548 61585 61590:61591 \ - 61596 61615 61620 61639 61644 61663 61668 61687 61692 61711 61716 61735 61740 61750 61773 61776 61795 61800 61819 61824 61843 61848 61867 61872 61891 61896 61906 61929:61930 \ - 61951 61954 61975 61978 61999 62002 62023 62026 62092 62097 62100 62103 62106 62109:62110 \ - 62133:62134 62157:62158 62181:62182 62205:62206 62229:62230 \ - 62253:62254 62284 62287 62290 62302 62334:62335 62338 62350 62371 62376 62395 62398 62421 62424 62443 62446 62467 62470 62491 62496 62515 62520 62539 62542 62563 62568 62578 62601 62604 62623 62628 62647 62652 62671 62674 62695 62698 62719 62722 62734 62757 62760 62779 62784 62803 62808 62827 62832 62851 62856 62911 62916:62917 \ - 62922 62925 62928 62949:62950 62973:62974 62997:62998 \ - 63021:63022 63045:63046 63060 63081:63082 63123:63124 \ - 63127 63132 63169 63172 63175 63178 63199 63204 63225:63226 \ - 63249 63252 63271 63274 63297 63300 63319 63324 63343 63346 63369:63370 \ - 63391 63396 63406 63429 63432 63451 63456 63475 63478 63499 63504 63523 63528 63547 63552 63562 63585 63588 63607 63612 63631 63636 63655 63660 63679 63684 63703 63706 63754 63757 63760 63765 63768 63789:63790 \ - 63813:63814 63837:63838 63859 63862 63883 63888 63907 63912 63949 63954:63955 \ - 63958 63997 64002:64003 64008 64027 64032 64051 64054 64075 64080 64099 64104 64125 64128 64147 64150 64173:64174 \ - 64197:64198 64219 64222 64234 64257 64260 64279 64282 64303 64308 64327 64332 64351 64356 64375 64380 64390 64413 64416 64435 64440 64459 64464 64483 64488 64507 64512 64531 64536 64600 64605:64606 \ - 64611:64612 64617:64618 64641:64642 64663 64668 64687 64692 64704 64725:64726 \ - 64749:64750 64789 64794:64795 64798 64819 64824 64843 64848 64867 64872 64891 64896 64915 64920 64939 64944 64965 64968 64989:64990 \ - 65013:65014 65037:65038 65061:65062 65074 65097:65098 \ - 65121:65122 65143 65148 65167 65172 65191 65196 65215 65220 65230 65253 65256 65275 65280 65299 65304 65323 65328 65347 65352 65371 65376 65413 65418:65419 \ - 65424 65461 65466:65467 65472 65500 65505:65506 65529 65532 65551 65554 65586:65587 \ - 65590 65602 65623 65628 65647 65650 65671 65676 65695 65700 65719 65724 65743 65748 65767 65772 65791 65796 65817 65820 65841:65842 \ - 65865:65866 65889:65890 65913:65914 65926 65949:65950 \ - 65973:65974 65995 66000 66019 66024 66043 66048 66067 66072 66082 66105 66108 66127 66132 66151 66156 66175 66180 66199 66204 66223 66228 66265 66270:66271 \ - 66276 66313 66318:66319 66324 66370 66375:66376 66379 66382 66394 66433 66438:66439 \ - 66444 66481 66486 66489:66490 66511 66516 66535 66540 66559 66564 66583 66588 66607 66612 66631 66636 66655 66660 66679 66684 66705 66708 66729:66730 \ - 66753:66754 66777:66778 66801:66802 66814 66837:66838 \ - 66861:66862 66883 66888 66907 66912 66931 66936 66955 66960 66970 66993 66996 67015 67020 67039 67044 67063 67068 67087 67092 67111 67116 67153 67158:67159 \ - 67164 67201 67204 67207 67210 67260:67261 67264 67267 67272 67338:67339 \ - 67344:67345 67350:67351 67356 67375 67380 67399 67404 67423 67428 67447 67452 67471 67474 67495 67500 67519 67524 67543 67548 67567 67572 67593:67594 \ - 67617:67618 67641:67642 67665:67666 67689:67690 67702 67725:67726 \ - 67747 67750 67771 67776 67795 67800 67819 67824 67843 67848 67858 67881 67884 67903 67908 67927 67932 67951 67956 67975 67980 67999 68004 68041 68044 68047 68050 68091:68092 \ - 68097:68098 68139:68140 68145:68146 68223:68224 68229:68230 \ - 68235:68236 68241:68242 68265:68266 68289:68290 68311 68316 68335 68338 68359 68362 68383 68388 68407 68410 68433:68434 \ - 68457:68458 68481:68482 68505:68506 68529:68530 68551 68554 68566 68589 68592 68611 68616 68635 68640 68659 68664 68683 68688 68707 68712 68722 68745 68748 68767 68772 68791 68796 68815 68820 68839 68844 68863 68866 68907:68908 \ - 68913:68914 68955:68956 68961:68962 69003:69004 69009:69010 \ - 69033:69034 69093:69094 69099:69100 69105:69106 69129:69130 \ - 69153:69154 69177 69180 69208 69211 69216 69235 69238 69261:69262 \ - 69285 69288 69309:69310 69333:69334 69355 69358 69379 69382 69403 69406 69427 69432 69442 69465 69468 69487 69492 69511 69514 69535 69540 69559 69564 69583 69588 69598 69621 69624 69643 69648 69667 69672 69691 69696 69715 69720 69741:69742 \ - 69783:69784 69789:69790 69829 69832 69837:69838 69879:69880 \ - 69885:69886 69909:69910 69969 69972:69973 69976 69981:69982 \ - 69996 70017:70018 70041 70044 70081 70086 70089:70090 \ - 70111 70114 70137:70138 70161:70162 70185:70186 70207 70210 70231 70236 70255 70260 70279 70284 70303 70308 70318 70341 70344 70363 70368 70387 70390 70411 70416 70435 70440 70459 70464 70474 70497 70500 70519 70524 70543 70548 70567 70572 70591 70596 70617:70618 \ - 70657 70662:70663 70668 70707 70710 70713:70714 70753 70756 70759 70762 70783 70786 70825 70830 70833:70834 \ - 70846 70867 70872 70882 70941:70942 70947:70948 70953:70954 \ - 70968 70989:70990 71011 71014 71035 71038 71059 71064 71083 71088 71107 71112 71131 71136 71155 71160 71170 71193 71196 71215 71220 71239 71242 71263 71268 71287 71292 71311 71314 71326 71349 71352 71371 71376 71395 71400 71419 71424 71443 71448 71467 71472 71511 71514 71517:71518 \ - 71557 71560 71565:71566 71607:71608 71613:71614 71637:71638 \ - 71679:71680 71685:71686 71709:71710 71787:71788 71793 71796:71797 \ - 71800 71805:71806 71827 71832 71842 71863 71868 71887 71892 71911 71916 71935 71940 71959 71964 71983 71988 71998 72021 72024 72043 72048 72067 72070 72091 72096 72115 72120 72139 72144 72154 72177 72180 72199 72204 72223 72228 72247 72252 72271 72276 72306:72307 \ - 72310 72351:72352 72357:72358 72397 72400 72405:72406 \ - 72429:72430 72453:72454 72477:72478 72501:72502 72525:72526 \ - 72540 72624:72625 72630:72631 72634 72639:72640 72645:72646 \ - 72667 72672 72691 72694 72715 72720 72739 72742 72765 72768 72787 72792 72811 72816 72826 72849 72852 72871 72876 72888 72907 72912 72931 72936 72966:72967 \ - 72972 72982 73005 73008 73027 73032 73051 73056 73075 73080 73099 73104 73143:73144 \ - 73147 73152 73173:73174 73197:73198 73221:73222 73245:73246 \ - 73269:73270 73293:73294 73317:73318 73341:73342 73356 73377:73378 \ - 73446:73447 73450 73455:73456 73461:73462 73485:73486 \ - 73500 73521 73524 73554 73557:73558 73579 73582 73605:73606 \ - 73620 73639 73642 73654 73677 73680 73699 73702 73723 73728 73747 73752 73791:73792 \ - 73795 73798 73810 73833 73836 73855 73860 73879 73884 73903 73908 73927 73932 73971:73972 \ - 73975 73980 74001:74002 74025:74026 74049:74050 74073:74074 \ - 74097:74098 74121:74122 74145:74146 74160 74172 74256:74257 \ - 74260 74265:74266 74271:74272 74277:74278 74301:74302 \ - 74316 74362 74367:74368 74373:74374 74397:74398 74419 74424 74445:74446 \ - 74458 74481:74482 74503 74506 74527 74532 74560 74563 74566 74607:74608 \ - 74611 74616 74626 74649 74652 74671 74676 74695 74700 74719 74724 74743 74746 74787:74788 \ - 74791 74796 74817:74818 74841:74842 74865:74866 74889:74890 \ - 74913:74914 74937:74938 74952 75036:75037 75040 75045:75046 \ - 75051:75052 75057:75058 75072 75093:75094 75162:75163 \ - 75166 75171:75172 75177:75178 75199 75202 75223 75226 75249 75252 75262 75285 75288 75307 75310 75322 75372:75373 \ - 75376 75379 75384 75423:75424 75427 75432 75442 75465 75468 75487 75492 75511 75516 75535 75540 75559 75562 75585:75586 \ - 75609:75610 75633:75634 75657:75658 75681:75682 75705:75706 \ - 75729:75730 75744 75828:75829 75832 75837:75838 75843:75844 \ - 75849:75850 75864 75885:75886 75954:75955 75958 75963:75964 \ - 75969:75970 75993:75994 76008 76029 76032 76042 76054 76077 76080 76110 76113:76114 \ - 76182:76183 76186 76191:76192 76195 76198 76221:76222 \ - 76245:76246 76258 76281 76284 76303 76308 76327 76332 76353:76354 \ - 76377:76378 76401:76402 76425:76426 76449:76450 76473:76474 \ - 76497:76498 76521:76522 76536 76620:76621 76624 76629:76630 \ - 76635:76636 76641:76642 76656 76677:76678 76746:76747 \ - 76750 76755:76756 76761:76762 76785:76786 76809:76810 \ - 76824 76834 76857:76858 76906 76909 76912 76917:76918 \ - 77004:77005 77008 77013:77014 77019:77020 77023 77026 77049:77050 \ - 77073:77074 77086 77109 77112 77131 77136 77157 77160 77172 77193:77194 \ - 77217:77218 77241:77242 77265:77266 77289:77290 77313:77314 \ - 77328 77412:77413 77416 77421:77422 77427:77428 77433:77434 \ - 77448 77469:77470 77545 77550:77551 77556:77557 77562:77563 \ - 77568 77587 77592 77611 77616 77626 77640 77724:77725 \ - 77728 77733:77734 77739:77740 77743 77748 77769:77770 \ - 77793:77794 77817:77818 77830 77853 77856 77875 77880 77892 77911 77916 77937:77938 \ - 77961:77962 77985:77986 78009:78010 78024 78106 78111 78114:78115 \ - 78120:78121 78126:78127 78132 78142 78163 78168 78250 78255 78258:78259 \ - 78264:78265 78270:78271 78276 78295 78300 78319 78324 78343 78348 78367 78372 78382 78405 78408 78427 78432 78451 78456 78475 78480 78499 78504 78523 78528 78538 78550 78571 78576 78595 78600 78612 78622 46956 46959:46960 \ - 46963 46966 46971:46972 46977:46978 46999 47004 47023 47028 47047 47052 47071 47076 47095 47100 47119 47124 47145:47146 \ - 47169:47170 47271 47274:47275 47278 47283:47284 47289:47290 \ - 48573:48574 48921:48922 50043:50044 50049:50050 50229:50230 \ - 51261:51262 51379 51382 52347:52348 52353:52354 52452 52476 53371 53374 53436 54331 54336 54348 54432 55233:55234 \ - 55344 56071 56076 | \ - N 16120:16121 16005 16005 16120 16005:16006 16006 16006 16111 16120 16120 16111 16105 16120 16120 16120 16105 16121 16121 16005 16121 16004 16004 16004 16121 16119 16119 16119 16121 16106 16106 16106 16121 16105 16105 16104 16099 16105 16105 16105 16099 16106 16106 16105 16111 16104 16104 15998 16005 15997 15997 16004 15997 16005 16005 16005 15998 16006 16006 15999 16006 15998 15998:15999 \ - 16115 16006 16006 16115 16110 16006 16006 16111 16006 16110 16110 16110 16104 16111 16111 15997 16004 15996 15996 16003 15996 16004 16004 16003:16004 \ - 16119 16119 16003 16119 16064 16064 16106 16064 16119 16119 16080 16106 16099 16099 16064 16106 16063 16063 16080 16063 16106 16106 16099 16104 16098 16098 16103 16098 16104 16104 16104 16110 16103 16103 16092 16099 16091 16091 16098 16091 16099 16099 16093 16099 16092 16092 16080 16099 16093 16093 15988 15997 15987 15987 15996 15987 15997 15997 15997 15988 15998 15998 15989 15998 15988 15988 15998 15989 15999 15999 15990 15999 15989 15989 15999 15990 16000 16000 16000 16115 15999 15999 16110 16115 16109 16109 16114 16109 16115 16115 16114:16115 \ - 16000 16000 16109 16103 16110 16110 15987 15996 15986 15986 15995 15986 15996 15996 15996 16003 15995 15995 16002 15995 16003 16003 16002:16003 \ - 16064 16064 16002 16064 16050 16050 16063 16050 16064 16064 16062 16080 16061 16061 16079 16061 16080 16080 16063 16080 16062 16062 16079:16080 \ - 16093 16093 16050 16063 16049 16049 16062 16049 16063 16063 16091 16098 16090 16090 16097 16090 16098 16098 16098 16103 16097 16097 16102 16097 16103 16103 16103 16109 16102 16102 16085 16091 16084 16084 16090 16084 16091 16091 16091 16085 16092 16092 16086 16092 16085 16085 16092 16086 16093 16093 16079 16093 16086 16086 15977 15987 15976 15976 15986 15976 15987 15987 15987 15977 15988 15988 15978 15988 15977 15977 15988 15978 15989 15989 15979 15989 15978 15978 15989 15979 15990 15990 15980 15990 15979 15979 15990 15980 15991 15991 15991 16000 15990 15990:15991 \ - 16118 16000 16000 16114 16000 16118 16118 16107 16102 16109 16109 16109 16114 16107 16107 16112 16107 16114 16114 16114 16118 16112 16112 15976 15986 15975 15975 15984 15975 15986 15986 15986 15995 15984 15984 15993 15984 15995 15995 15995 16002 15993 15993 16001 15993 16002 16002 16001:16002 \ - 16050 16050 16001 16050 16025 16025 16049 16025 16050 16050 16048 16061 16047 16047 16060 16047 16061 16061 16061 16048 16062 16062 16061 16079 16060 16060 16049 16062 16048 16048 16078 16060 16079 16079 16078:16079 \ - 16086 16086 16024 16049 16023 16023 16048 16023 16049 16049 16025 16049 16024 16024 16084 16090 16083 16083 16089 16083 16090 16090 16090 16097 16089 16089 16096 16089 16097 16097 16097 16102 16096 16096 16101 16096 16102 16102 16102 16107 16101 16101 16076 16084 16075 16075 16083 16075 16084 16084 16084 16076 16085 16085 16077 16085 16076 16076 16085 16077 16086 16086 16078 16086 16077 16077 15902 15977 15901 15901 15976 15901 15977 15977 15977 15902 15978 15978 15903 15978 15902 15902 15978 15903 15979 15979 15904 15979 15903 15903 15979 15904 15980 15980 15901 15976 15900 15900 15975 15900 15976 15976 15905 15980 15904 15904 15980 15905 15981 15981 15981 15991 15980 15980 15991 15981 15992 15992 16118 15991 16116 16116 15992 16116 15991 15991 16116 16112 16118 16118 16101 16107 16100 16100 16108 16100 16107 16107 16107 16112 16108 16108 16113 16108 16112 16112 16112 16116 16113 16113 15900 15975 15899 15899 15974 15899 15975 15975 15975 15984 15974 15974 15985 15974 15984 15984 15984 15993 15985 15985 15994 15985 15993 15993 15993 16001 15994 15994 15969 15994 16001 16001 15969 16001 16025 16025 15969 16025 15968 15968 16024 15968 16025 16025 16022 16047 16021 16021 16046 16021 16047 16047 16047 16022 16048 16048 16047 16060 16046 16046 16023 16048 16022 16022 16059 16046 16060 16060 16060 16078 16059 16059 16071 16078 16070 16070 16077 16070 16078 16078 16059 16078 16071 16071 15967 16023 15966 15966 16022 15966 16023 16023 16023 15967 16024 16024 15968 16024 15967 15967 16075 16083 16074 16074 16082 16074 16083 16083 16083 16089 16082 16082 16087 16082 16089 16089 16089 16096 16087 16087 16094 16087 16096 16096 16096 16101 16094 16094 16100 16094 16101 16101 16069 16076 16068 16068 16075 16068 16076 16076 16076 16069 16077 16077 16070 16077 16069 16069 16068 16075 16067 16067 16074 16067 16075 16075 15887 15901 15886 15886 15900 15886 15901 15901 15901 15887 15902 15902 15888 15902 15887 15887 15902 15888 15903 15903 15889 15903 15888 15888 15903 15889 15904 15904 15890 15904 15889 15889 15904 15890 15905 15905 15886 15900 15885 15885 15899 15885 15900 15900 15891 15905 15890 15890 15905 15891 15906 15906 15906 15981 15905 15905 15981 15906 15982 15982 15982 15992 15981 15981 16116 15992 16117 16117 15983 16117 15992 15992 15983 15992 15982 15982 16117 16113 16116 16116 16094 16100 16095 16095 16095 16100 16029 16029 16029 16100 16028 16028 16100 16108 16028 16028 16108 16113 16028 16028 16028 16113 16026 16026 16113 16117 16026 16026 15885 15899 15884 15884 15898 15884 15899 15899 15899 15974 15898 15898 15973 15898 15974 15974 15974 15985 15973 15973 15973 15985 15971 15971 15985 15994 15971 15971 15971 15994 15970 15970 15970 15994 15969 15969 15945 15969 15944 15944 15968 15944 15969 15969 15969 15945 15970 15970 15944 15968 15943 15943 15967 15943 15968 15968 15965 16021 15964 15964 16020 15964 16021 16021 16021 15965 16022 16022 16021 16046 16020 16020 15966 16022 15965 15965 16045 16020 16046 16046 16046 16059 16045 16045 16058 16045 16059 16059 16058:16059 \ - 16071 16071 16057 16070 16056 16056 16069 16056 16070 16070 16070 16057 16071 16071 16058 16071 16057 16057 15942 15966 15941 15941 15965 15941 15966 15966 15966 15942 15967 15967 15943 15967 15942 15942 16067 16074 16066 16066 16072 16066 16074 16074 16074 16082 16072 16072 16081 16072 16082 16082 16082 16087 16081 16081 16088 16081 16087 16087 16087 16094 16088 16088 16095 16088 16094 16094 16055 16068 16054 16054 16067 16054 16068 16068 16068 16055 16069 16069 16056 16069 16055 16055 16054 16067 16053 16053 16066 16053 16067 16067 15843 15887 15842 15842 15886 15842 15887 15887 15887 15843 15888 15888 15844 15888 15843 15843 15888 15844 15889 15889 15845 15889 15844 15844 15889 15845 15890 15890 15846 15890 15845 15845 15890 15846 15891 15891 15842 15886 15841 15841 15885 15841 15886 15886 15841 15885 15840 15840 15884 15840 15885 15885 15847 15891 15846 15846 15891 15847 15892 15892 15892 15906 15891 15891 15906 15892 15907 15907 15907 15982 15906 15906 15982 15907 15983 15983 16026 16117 16027 16027 16117 15983 16027 16027 15908 15983 15907 15907:15908 \ - 15852 15983 15983 15853 15983 15852 15852:15853 16027 15983 15983 16088 16095 16030 16030 16030 16095 16029 16029 15857 16029 15856 15856 16028 15856 16029 16029 16029 15857 16030 16030 15856 16028 15855 15855 16026 15855 16028 16028 15855 16026 15854 15854 16027 15854 16026 16026 15840 15884 15839 15839 15883 15839 15884 15884 15884 15898 15883 15883 15897 15883 15898 15898 15898 15973 15897 15897 15972 15897 15973 15973 15972:15973 \ - 15971 15971 15947 15971 15946 15946 15970 15946 15971 15971 15971 15947 15972 15972 15946 15970 15945 15945 15932 15944 15931 15931 15943 15931 15944 15944 15944 15932 15945 15945 15933 15945 15932 15932 15945 15933 15946 15946 15931 15943 15930 15930 15942 15930 15943 15943 15941 15965 15940 15940 15964 15940 15965 15965 15940 15964 15939 15939 15963 15939 15964 15964 15964 16020 15963 15963 16018 15963 16020 16020 16020 16045 16018 16018 16044 16018 16045 16045 16045 16058 16044 16044 16043 16058 16042 16042 16057 16042 16058 16058 16044 16058 16043 16043 16041 16056 16040 16040 16055 16040 16056 16056 16056 16041 16057 16057 16042 16057 16041 16041 15929 15941 15928 15928 15940 15928 15941 15941 15941 15929 15942 15942 15930 15942 15929 15929 16053 16066 16051 16051 16065 16051 16066 16066 16066 16072 16065 16065 16073 16065 16072 16072 16072 16081 16073 16073 16073 16081 16032 16032 16032 16081 16031 16031 16081 16088 16031 16031 16031 16088 16030 16030 16040 16055 16039 16039 16054 16039 16055 16055 16039 16054 16038 16038 16053 16038 16054 16054 16038 16053 16037 16037 16051 16037 16053 16053 15741 15843 15740 15740 15842 15740 15843 15843 15843 15741 15844 15844 15742 15844 15741 15741 15844 15742 15845 15845 15743 15845 15742 15742 15845 15743 15846 15846 15744 15846 15743 15743 15846 15744 15847 15847 15740 15842 15739 15739 15841 15739 15842 15842 15739 15841 15738 15738 15840 15738 15841 15841 15738 15840 15737 15737 15839 15737 15840 15840 15745 15847 15744 15744 15847 15745 15848 15848 15848 15892 15847 15847 15892 15848 15893 15893 15893 15907 15892 15892 15907 15893 15908 15908 15854 16027 15853 15853 15894 15908 15893 15893:15894 \ - 15851 15908 15908 15852 15908 15851 15851 15788 15852 15787 15787 15851 15787 15852 15852 15852 15788 15853 15853 15789 15853 15788 15788 15853 15789 15854 15854 15858 16030 15857 15857 16030 15858 16031 16031 15792 15856 15791 15791 15855 15791 15856 15856 15856 15792 15857 15857 15793 15857 15792 15792 15857 15793 15858 15858 15791 15855 15790 15790 15854 15790 15855 15855 15790 15854 15789 15789 15737 15839 15736 15736 15838 15736 15839 15839 15839 15883 15838 15838 15882 15838 15883 15883 15883 15897 15882 15882 15895 15882 15897 15897 15897 15972 15895 15895 15948 15972 15947 15947 15895 15972 15948 15948 15934 15946 15933 15933 15946 15934 15947 15947 15935 15947 15934 15934 15947 15935 15948 15948 15875 15931 15874 15874 15930 15874 15931 15931 15931 15875 15932 15932 15876 15932 15875 15875 15932 15876 15933 15933 15877 15933 15876 15876 15933 15877 15934 15934 15874 15930 15873 15873 15929 15873 15930 15930 15928 15940 15927 15927 15939 15927 15940 15940 15927 15939 15926 15926 15938 15926 15939 15939 15939 15963 15938 15938 15962 15938 15963 15963 15963 16018 15962 15962 16019 15962 16018 16018 16018 16044 16019 16019 16017 16044 16016 16016 16043 16016 16044 16044 16019 16044 16017 16017 16015 16042 16014 16014 16041 16014 16042 16042 16042 16015 16043 16043 16016 16043 16015 16015 16013 16040 16012 16012 16039 16012 16040 16040 16040 16013 16041 16041 16014 16041 16013 16013 15873 15929 15872 15872 15928 15872 15929 15929 15872 15928 15871 15871 15927 15871 15928 15928 16037 16051 16036 16036 16052 16036 16051 16051 16051 16065 16052 16052 16033 16052 16065 16065 16065 16073 16033 16033 16033 16073 16032 16032 15860 16032 15859 15859 16031 15859 16032 16032 16032 15860 16033 16033 15859 16031 15858 15858 16012 16039 16011 16011 16038 16011 16039 16039 16011 16038 16010 16010 16037 16010 16038 16038 16010 16037 16009 16009 16036 16009 16037 16037 15705 15741 15704 15704 15740 15704 15741 15741 15741 15705 15742 15742 15706 15742 15705 15705 15742 15706 15743 15743 15707 15743 15706 15706 15743 15707 15744 15744 15708 15744 15707 15707 15744 15708 15745 15745 15704 15740 15703 15703 15739 15703 15740 15740 15703 15739 15702 15702 15738 15702 15739 15739 15702 15738 15701 15701 15737 15701 15738 15738 15701 15737 15700 15700 15736 15700 15737 15737 15709 15745 15708 15708 15745 15709 15746 15746 15746 15848 15745 15745 15848 15746 15849 15849 15849 15893 15848 15848 15894 15893 15849 15849 15894 15849:15850 \ - 15850 15850:15851 15894 15894 15787 15851 15785 15785 15850 15785 15851 15851 15770 15787 15768 15768 15785 15768 15787 15787 15787 15770 15788 15788 15771 15788 15770 15770 15788 15771 15789 15789 15772 15789 15771 15771 15789 15772 15790 15790 15794 15858 15793 15793 15858 15794 15859 15859 15774 15791 15773 15773 15790 15773 15791 15791 15791 15774 15792 15792 15775 15792 15774 15774 15792 15775 15793 15793 15776 15793 15775 15775 15793 15776 15794 15794 15773 15790 15772 15772 15700 15736 15699 15699 15735 15699 15736 15736 15736 15838 15735 15735 15837 15735 15838 15838 15838 15882 15837 15837 15881 15837 15882 15882 15882 15895 15881 15881 15896 15881 15895 15895:15896 \ - 15895 15948 15948 15896 15948 15935 15935 15878 15934 15877 15877 15934 15878 15935 15935 15879 15935 15878 15878:15879 \ - 15896 15935 15935 15827 15874 15826 15826 15873 15826 15874 15874 15874 15827 15875 15875 15828 15875 15827 15827 15875 15828 15876 15876 15829 15876 15828 15828 15876 15829 15877 15877 15830 15877 15829 15829 15877 15830 15878 15878 15826 15873 15825 15825 15872 15825 15873 15873 15871 15927 15870 15870 15926 15870 15927 15927 15870 15926 15869 15869 15925 15869 15926 15926 15926 15938 15925 15925 15937 15925 15938 15938 15938 15962 15937 15937 15961 15937 15962 15962 15962 16019 15961 15961 15961 16019 16017 16017 15958 16016 15957 15957 16015 15957 16016 16016 16016 15958 16017 16017 15959 16017 15958 15958:15959 \ - 15961 16017 16017 15956 16014 15955 15955 16013 15955 16014 16014 16014 15956 16015 16015 15957 16015 15956 15956 15955 16013 15954 15954 16012 15954 16013 16013 15954 16012 15953 15953 16011 15953 16012 16012 15825 15872 15824 15824 15871 15824 15872 15872 15824 15871 15823 15823 15870 15823 15871 15871 16009 16036 16007 16007 16035 16007 16036 16036 16036 16052 16035 16035 16035 16052 16034 16034 16034 16052 16033 16033 15861 16033 15860 15860 16033 15861 16034 16034 15795 15859 15794 15794 15859 15795 15860 15860 15796 15860 15795 15795 15860 15796 15861 15861 15953 16011 15952 15952 16010 15952 16011 16011 15952 16010 15951 15951 16009 15951 16010 16010 15951 16009 15950 15950 16007 15950 16009 16009 15542 15705 15541 15541 15704 15541 15705 15705 15705 15542 15706 15706 15543 15706 15542 15542 15706 15543 15707 15707 15544 15707 15543 15543 15707 15544 15708 15708 15545 15708 15544 15544 15708 15545 15709 15709 15541 15704 15540 15540 15703 15540 15704 15704 15540 15703 15539 15539 15702 15539 15703 15703 15539 15702 15538 15538 15701 15538 15702 15702 15538 15701 15537 15537 15700 15537 15701 15701 15537 15700 15536 15536 15699 15536 15700 15700 15546 15709 15545 15545 15709 15546 15710 15710 15710 15746 15709 15709 15746 15710 15747 15747 15747 15849 15746 15746 15849 15747 15850 15850 15748 15850 15747 15747:15748 \ - 15786 15850 15850 15786 15785 15850 15850 15768 15785 15769 15769 15786 15769 15785 15785 15716 15768 15715 15715 15769 15715 15768 15768 15768 15716 15770 15770 15717 15770 15716 15716 15770 15717 15771 15771 15718 15771 15717 15717 15771 15718 15772 15772 15719 15772 15718 15718 15772 15719 15773 15773 15777 15794 15776 15776 15794 15777 15795 15795 15720 15773 15719 15719 15773 15720 15774 15774 15721 15774 15720 15720 15774 15721 15775 15775 15722 15775 15721 15721 15775 15722 15776 15776 15723 15776 15722 15722 15776 15723 15777 15777 15536 15699 15535 15535 15698 15535 15699 15699 15699 15735 15698 15698 15734 15698 15735 15735 15735 15837 15734 15734 15835 15734 15837 15837 15837 15881 15835 15835 15880 15835 15881 15881 15881 15896 15880 15880 15880 15896 15879 15879 15831 15878 15830 15830 15878 15831 15879 15879 15832 15879 15831 15831 15879 15832 15880 15880 15687 15827 15686 15686 15826 15686 15827 15827 15827 15687 15828 15828 15688 15828 15687 15687 15828 15688 15829 15829 15689 15829 15688 15688 15829 15689 15830 15830 15690 15830 15689 15689 15830 15690 15831 15831 15686 15826 15685 15685 15825 15685 15826 15826 15685 15825 15684 15684 15824 15684 15825 15825 15823 15870 15822 15822 15869 15822 15870 15870 15822 15869 15821 15821 15868 15821 15869 15869 15869 15925 15868 15868 15923 15868 15925 15925 15925 15937 15923 15923 15936 15923 15937 15937 15937 15961 15936 15936 15936 15961 15960 15960 15960:15961 \ - 15959 15959 15918 15957 15917 15917 15956 15917 15957 15957 15957 15918 15958 15958 15919 15958 15918 15918 15958 15919 15959 15959 15920 15959 15919 15919 15959 15920 15960 15960 15916 15955 15915 15915 15954 15915 15955 15955 15955 15916 15956 15956 15917 15956 15916 15916 15915 15954 15914 15914 15953 15914 15954 15954 15914 15953 15913 15913 15952 15913 15953 15953 15684 15824 15683 15683 15823 15683 15824 15824 15683 15823 15682 15682 15822 15682 15823 15823 15950 16007 15949 15949 16008 15949 16007 16007:16008 \ - 16007 16035 16035 15863 16035 15862 15862 16034 15862 16035 16035 15863 16008 16035 16035 15862 16034 15861 15861 15797 15861 15796 15796 15861 15797 15862 15862 15778 15795 15777 15777 15795 15778 15796 15796 15779 15796 15778 15778 15796 15779 15797 15797 15913 15952 15912 15912 15951 15912 15952 15952 15912 15951 15911 15911 15950 15911 15951 15951 15911 15950 15909 15909 15949 15909 15950 15950 15521 15542 15520 15520 15541 15520 15542 15542 15542 15521 15543 15543 15522 15543 15521 15521 15543 15522 15544 15544 15523 15544 15522 15522 15544 15523 15545 15545 15524 15545 15523 15523 15545 15524 15546 15546 15520 15541 15519 15519 15540 15519 15541 15541 15519 15540 15518 15518 15539 15518 15540 15540 15518 15539 15517 15517 15538 15517 15539 15539 15517 15538 15516 15516 15537 15516 15538 15538 15516 15537 15515 15515 15536 15515 15537 15537 15515 15536 15514 15514 15535 15514 15536 15536 15525 15546 15524 15524 15546 15525 15547 15547 15547 15710 15546 15546 15710 15547 15711 15711 15711 15747 15710 15710 15747 15711 15748 15748 15712 15748 15711 15711 15748 15712 15749 15749 15749 15786 15748 15748 15769 15786 15749 15749 15715 15769 15714 15714 15714 15769 15749 15749 15598 15715 15597 15597 15714 15597 15715 15715 15715 15598 15716 15716 15599 15716 15598 15598 15716 15599 15717 15717 15600 15717 15599 15599 15717 15600 15718 15718 15601 15718 15600 15600 15718 15601 15719 15719 15602 15719 15601 15601 15719 15602 15720 15720 15724 15777 15723 15723 15777 15724 15778 15778 15603 15720 15602 15602 15720 15603 15721 15721 15604 15721 15603 15603 15721 15604 15722 15722 15605 15722 15604 15604 15722 15605 15723 15723 15606 15723 15605 15605 15723 15606 15724 15724 15514 15535 15513 15513 15534 15513 15535 15535 15535 15698 15534 15534 15697 15534 15698 15698 15698 15734 15697 15697 15732 15697 15734 15734 15734 15835 15732 15732 15836 15732 15835 15835 15835 15880 15836 15836 15833 15880 15832 15832 15836 15880 15833 15833 15691 15831 15690 15690 15831 15691 15832 15832 15692 15832 15691 15691 15832 15692 15833 15833 15648 15687 15647 15647 15686 15647 15687 15687 15687 15648 15688 15688 15649 15688 15648 15648 15688 15649 15689 15689 15650 15689 15649 15649 15689 15650 15690 15690 15651 15690 15650 15650 15690 15651 15691 15691 15647 15686 15646 15646 15685 15646 15686 15686 15646 15685 15645 15645 15684 15645 15685 15685 15645 15684 15644 15644 15683 15644 15684 15684 15682 15822 15681 15681 15821 15681 15822 15822 15681 15821 15680 15680 15820 15680 15821 15821 15821 15868 15820 15820 15866 15820 15868 15868 15868 15923 15866 15866 15924 15866 15923 15923 15923 15936 15924 15924 15921 15924 15936 15936 15921 15936 15960 15960 15921 15960 15920 15920 15811 15917 15810 15810 15916 15810 15917 15917 15917 15811 15918 15918 15812 15918 15811 15811 15918 15812 15919 15919 15813 15919 15812 15812 15919 15813 15920 15920 15814 15920 15813 15813 15920 15814 15921 15921 15810 15916 15809 15809 15915 15809 15916 15916 15809 15915 15808 15808 15914 15808 15915 15915 15808 15914 15807 15807 15913 15807 15914 15914 15807 15913 15806 15806 15912 15806 15913 15913 15644 15683 15643 15643 15682 15643 15683 15683 15643 15682 15642 15642 15681 15642 15682 15682 15909 15949 15910 15910 15864 15910 15949 15949 15949 16008 15864 15864 15864 16008 15863 15863 15798 15862 15797 15797 15862 15798 15863 15863 15799 15863 15798 15798 15863 15799 15864 15864 15780 15797 15779 15779 15797 15780 15798 15798 15725 15778 15724 15724 15778 15725 15779 15779 15726 15779 15725 15725 15779 15726 15780 15780 15806 15912 15805 15805 15911 15805 15912 15912 15805 15911 15804 15804 15909 15804 15911 15911 15804 15909 15803 15803 15910 15803 15909 15909 15474 15521 15473 15473 15520 15473 15521 15521 15521 15474 15522 15522 15475 15522 15474 15474 15522 15475 15523 15523 15476 15523 15475 15475 15523 15476 15524 15524 15477 15524 15476 15476 15524 15477 15525 15525 15473 15520 15472 15472 15519 15472 15520 15520 15472 15519 15471 15471 15518 15471 15519 15519 15471 15518 15470 15470 15517 15470 15518 15518 15470 15517 15469 15469 15516 15469 15517 15517 15469 15516 15468 15468 15515 15468 15516 15516 15468 15515 15467 15467 15514 15467 15515 15515 15467 15514 15466 15466 15513 15466 15514 15514 15478 15525 15477 15477 15525 15478 15526 15526 15526 15547 15525 15525 15547 15526 15548 15548 15548 15711 15547 15547 15711 15548 15712 15712 15549 15712 15548 15548 15712 15549 15713 15713 15713 15749 15712 15712:15714 \ - 15749 15749 15597 15714 15596 15596 15713 15596 15714 15714 15489 15598 15488 15488 15597 15488 15598 15598 15598 15489 15599 15599 15490 15599 15489 15489 15599 15490 15600 15600 15491 15600 15490 15490 15600 15491 15601 15601 15492 15601 15491 15491 15601 15492 15602 15602 15488 15597 15487 15487 15596 15487 15597 15597 15493 15602 15492 15492 15602 15493 15603 15603 15607 15724 15606 15606 15724 15607 15725 15725 15494 15603 15493 15493 15603 15494 15604 15604 15495 15604 15494 15494 15604 15495 15605 15605 15496 15605 15495 15495 15605 15496 15606 15606 15497 15606 15496 15496 15606 15497 15607 15607 15466 15513 15465 15465 15512 15465 15513 15513 15513 15534 15512 15512 15533 15512 15534 15534 15534 15697 15533 15533 15696 15533 15697 15697 15697 15732 15696 15696 15733 15696 15732 15732 15732 15836 15733 15733 15733 15836 15834 15834 15834 15836 15833 15833 15693 15833 15692 15692 15834 15833 15693 15693 15652 15691 15651 15651 15691 15652 15692 15692 15653 15692 15652 15652 15692 15653 15693 15693 15564 15648 15563 15563 15647 15563 15648 15648 15648 15564 15649 15649 15565 15649 15564 15564 15649 15565 15650 15650 15566 15650 15565 15565 15650 15566 15651 15651 15567 15651 15566 15566 15651 15567 15652 15652 15563 15647 15562 15562 15646 15562 15647 15647 15562 15646 15561 15561 15645 15561 15646 15646 15561 15645 15560 15560 15644 15560 15645 15645 15560 15644 15559 15559 15643 15559 15644 15644 15642 15681 15641 15641 15680 15641 15681 15681 15641 15680 15640 15640 15679 15640 15680 15680 15680 15820 15679 15679 15819 15679 15820 15820 15820 15866 15819 15819 15867 15819 15866 15866 15866 15924 15867 15867 15867 15924 15922 15922 15922 15924 15921 15921 15815 15921 15814 15814 15921 15815 15922 15922 15761 15811 15760 15760 15810 15760 15811 15811 15811 15761 15812 15812 15762 15812 15761 15761 15812 15762 15813 15813 15763 15813 15762 15762 15813 15763 15814 15814 15764 15814 15763 15763 15814 15764 15815 15815 15760 15810 15759 15759 15809 15759 15810 15810 15759 15809 15758 15758 15808 15758 15809 15809 15758 15808 15757 15757 15807 15757 15808 15808 15757 15807 15756 15756 15806 15756 15807 15807 15756 15806 15755 15755 15805 15755 15806 15806 15559 15643 15558 15558 15642 15558 15643 15643 15558 15642 15557 15557 15641 15557 15642 15642 15803 15910 15802 15802 15802 15910 15865 15865 15865 15910 15864 15864 15800 15864 15799 15799 15864 15800 15865 15865 15781 15798 15780 15780 15798 15781 15799 15799 15782 15799 15781 15781 15799 15782 15800 15800 15727 15780 15726 15726 15780 15727 15781 15781 15608 15725 15607 15607 15725 15608 15726 15726 15609 15726 15608 15608 15726 15609 15727 15727 15755 15805 15754 15754 15804 15754 15805 15805 15754 15804 15753 15753 15803 15753 15804 15804 15753 15803 15752 15752 15802 15752 15803 15803 15351 15474 15350 15350 15473 15350 15474 15474 15474 15351 15475 15475 15352 15475 15351 15351 15475 15352 15476 15476 15353 15476 15352 15352 15476 15353 15477 15477 15354 15477 15353 15353 15477 15354 15478 15478 15350 15473 15349 15349 15472 15349 15473 15473 15349 15472 15348 15348 15471 15348 15472 15472 15348 15471 15347 15347 15470 15347 15471 15471 15347 15470 15346 15346 15469 15346 15470 15470 15346 15469 15345 15345 15468 15345 15469 15469 15345 15468 15344 15344 15467 15344 15468 15468 15344 15467 15343 15343 15466 15343 15467 15467 15343 15466 15342 15342 15465 15342 15466 15466 15355 15478 15354 15354 15478 15355 15479 15479 15479 15526 15478 15478 15526 15479 15527 15527 15527 15548 15526 15526 15548 15527 15549 15549 15528 15549 15527 15527:15528 \ - 15595 15549 15549 15595 15713 15549 15549 15594 15713 15595 15595:15596 \ - 15713 15594 15594 15487 15596 15486 15486 15594 15486 15596 15596 15367 15489 15366 15366 15488 15366 15489 15489 15489 15367 15490 15490 15368 15490 15367 15367 15490 15368 15491 15491 15369 15491 15368 15368 15491 15369 15492 15492 15370 15492 15369 15369 15492 15370 15493 15493 15366 15488 15365 15365 15487 15365 15488 15488 15365 15487 15364 15364 15486 15364 15487 15487 15371 15493 15370 15370 15493 15371 15494 15494 15498 15607 15497 15497 15607 15498 15608 15608 15372 15494 15371 15371 15494 15372 15495 15495 15373 15495 15372 15372 15495 15373 15496 15496 15374 15496 15373 15373 15496 15374 15497 15497 15375 15497 15374 15374 15497 15375 15498 15498 15342 15465 15341 15341 15464 15341 15465 15465 15465 15512 15464 15464 15511 15464 15512 15512 15512 15533 15511 15511 15532 15511 15533 15533 15533 15696 15532 15532 15695 15532 15696 15696 15696 15733 15695 15695 15695 15733 15694 15694 15694 15733 15834 15834 15834 15693:15694 \ - 15694 15654 15693 15653 15653 15693 15654 15694 15694 15568 15652 15567 15567 15652 15568 15653 15653 15569 15653 15568 15568 15653 15569 15654 15654 15450 15564 15449 15449 15563 15449 15564 15564 15564 15450 15565 15565 15451 15565 15450 15450 15565 15451 15566 15566 15452 15566 15451 15451 15566 15452 15567 15567 15453 15567 15452 15452 15567 15453 15568 15568 15449 15563 15448 15448 15562 15448 15563 15563 15448 15562 15447 15447 15561 15447 15562 15562 15447 15561 15446 15446 15560 15446 15561 15561 15446 15560 15445 15445 15559 15445 15560 15560 15445 15559 15444 15444 15558 15444 15559 15559 15557 15641 15556 15556 15640 15556 15641 15641 15556 15640 15555 15555 15639 15555 15640 15640 15640 15679 15639 15639 15678 15639 15679 15679 15679 15819 15678 15678 15818 15678 15819 15819 15819 15867 15818 15818 15818 15867 15816 15816 15816 15867 15922 15922 15816 15922 15815 15815 15765 15815 15764 15764 15815 15765 15816 15816 15669 15761 15668 15668 15760 15668 15761 15761 15761 15669 15762 15762 15670 15762 15669 15669 15762 15670 15763 15763 15671 15763 15670 15670 15763 15671 15764 15764 15672 15764 15671 15671 15764 15672 15765 15765 15668 15760 15667 15667 15759 15667 15760 15760 15667 15759 15666 15666 15758 15666 15759 15759 15666 15758 15665 15665 15757 15665 15758 15758 15665 15757 15664 15664 15756 15664 15757 15757 15664 15756 15663 15663 15755 15663 15756 15756 15663 15755 15662 15662 15754 15662 15755 15755 15444 15558 15443 15443 15557 15443 15558 15558 15443 15557 15442 15442 15556 15442 15557 15557 15752 15802 15751 15751 15801 15751 15802 15802 15801:15802 \ - 15865 15865 15801 15865 15800 15800 15783 15800 15782 15782 15800 15783 15801 15801 15728 15781 15727 15727 15781 15728 15782 15782 15729 15782 15728 15728 15782 15729 15783 15783 15610 15727 15609 15609 15727 15610 15728 15728 15499 15608 15498 15498 15608 15499 15609 15609 15500 15609 15499 15499 15609 15500 15610 15610 15662 15754 15661 15661 15753 15661 15754 15754 15661 15753 15660 15660 15752 15660 15753 15753 15660 15752 15659 15659 15751 15659 15752 15752 15326 15351 15325 15325 15350 15325 15351 15351 15351 15326 15352 15352 15327 15352 15326 15326 15352 15327 15353 15353 15328 15353 15327 15327 15353 15328 15354 15354 15329 15354 15328 15328 15354 15329 15355 15355 15325 15350 15324 15324 15349 15324 15350 15350 15324 15349 15323 15323 15348 15323 15349 15349 15323 15348 15322 15322 15347 15322 15348 15348 15322 15347 15321 15321 15346 15321 15347 15347 15321 15346 15320 15320 15345 15320 15346 15346 15320 15345 15319 15319 15344 15319 15345 15345 15319 15344 15318 15318 15343 15318 15344 15344 15318 15343 15317 15317 15342 15317 15343 15343 15317 15342 15316 15316 15341 15316 15342 15342 15330 15355 15329 15329 15355 15330 15356 15356 15356 15479 15355 15355 15479 15356 15480 15480 15480 15527 15479 15479 15527 15480 15528 15528 15481 15528 15480 15480 15528 15481 15529 15529 15529 15595 15528 15528 15595 15529 15594 15594 15484 15594 15529 15529 15486 15594 15484 15484 15364 15486 15363 15363 15484 15363 15486 15486 15239 15367 15238 15238 15366 15238 15367 15367 15367 15239 15368 15368 15240 15368 15239 15239 15368 15240 15369 15369 15241 15369 15240 15240 15369 15241 15370 15370 15242 15370 15241 15241 15370 15242 15371 15371 15238 15366 15237 15237 15365 15237 15366 15366 15237 15365 15236 15236 15364 15236 15365 15365 15236 15364 15235 15235 15363 15235 15364 15364 15243 15371 15242 15242 15371 15243 15372 15372 15376 15498 15375 15375 15498 15376 15499 15499 15244 15372 15243 15243 15372 15244 15373 15373 15245 15373 15244 15244 15373 15245 15374 15374 15246 15374 15245 15245 15374 15246 15375 15375 15247 15375 15246 15246 15375 15247 15376 15376 15316 15341 15315 15315 15340 15315 15341 15341 15341 15464 15340 15340 15463 15340 15464 15464 15464 15511 15463 15463 15510 15463 15511 15511 15511 15532 15510 15510 15531 15510 15532 15532 15532 15695 15531 15531 15531 15695 15655 15655 15694 15655 15695 15695 15655 15694 15654 15654 15570 15654 15569 15569 15654 15570 15655 15655 15454 15568 15453 15453 15568 15454 15569 15569 15455 15569 15454 15454 15569 15455 15570 15570 15426 15450 15425 15425 15449 15425 15450 15450 15450 15426 15451 15451 15427 15451 15426 15426 15451 15427 15452 15452 15428 15452 15427 15427 15452 15428 15453 15453 15429 15453 15428 15428 15453 15429 15454 15454 15425 15449 15424 15424 15448 15424 15449 15449 15424 15448 15423 15423 15447 15423 15448 15448 15423 15447 15422 15422 15446 15422 15447 15447 15422 15446 15421 15421 15445 15421 15446 15446 15421 15445 15420 15420 15444 15420 15445 15445 15420 15444 15419 15419 15443 15419 15444 15444 15442 15556 15441 15441 15555 15441 15556 15556 15441 15555 15440 15440 15554 15440 15555 15555 15555 15639 15554 15554 15638 15554 15639 15639 15639 15678 15638 15638 15676 15638 15678 15678 15678 15818 15676 15676 15817 15676 15818 15818 15817:15818 \ - 15816 15816 15766 15816 15765 15765 15816 15766 15817 15817 15673 15765 15672 15672 15765 15673 15766 15766 15629 15669 15628 15628 15668 15628 15669 15669 15669 15629 15670 15670 15630 15670 15629 15629 15670 15630 15671 15671 15631 15671 15630 15630 15671 15631 15672 15672 15632 15672 15631 15631 15672 15632 15673 15673 15628 15668 15627 15627 15667 15627 15668 15668 15627 15667 15626 15626 15666 15626 15667 15667 15626 15666 15625 15625 15665 15625 15666 15666 15625 15665 15624 15624 15664 15624 15665 15665 15624 15664 15623 15623 15663 15623 15664 15664 15623 15663 15622 15622 15662 15622 15663 15663 15622 15662 15621 15621 15661 15621 15662 15662 15419 15443 15418 15418 15442 15418 15443 15443 15418 15442 15417 15417 15441 15417 15442 15442 15659 15751 15658 15658 15750 15658 15751 15751 15751 15801 15750 15750 15784 15801 15783 15783 15750 15801 15784 15784 15730 15783 15729 15729 15783 15730 15784 15784 15611 15728 15610 15610 15728 15611 15729 15729 15612 15729 15611 15611 15729 15612 15730 15730 15501 15610 15500 15500 15610 15501 15611 15611 15377 15499 15376 15376 15499 15377 15500 15500 15378 15500 15377 15377 15500 15378 15501 15501 15621 15661 15620 15620 15660 15620 15661 15661 15620 15660 15619 15619 15659 15619 15660 15660 15619 15659 15618 15618 15658 15618 15659 15659 15211 15326 15209 15209 15325 15209 15326 15326 15326 15211 15327 15327 15213 15327 15211 15211 15327 15213 15328 15328 15215 15328 15213 15213 15328 15215 15329 15329 15217 15329 15215 15215 15329 15217 15330 15330 15209 15325 15207 15207 15324 15207 15325 15325 15207 15324 15205 15205 15323 15205 15324 15324 15205 15323 15203 15203 15322 15203 15323 15323 15203 15322 15201 15201 15321 15201 15322 15322 15201 15321 15199 15199 15320 15199 15321 15321 15199 15320 15197 15197 15319 15197 15320 15320 15197 15319 15195 15195 15318 15195 15319 15319 15195 15318 15193 15193 15317 15193 15318 15318 15193 15317 15191 15191 15316 15191 15317 15317 15191 15316 15189 15189 15315 15189 15316 15316 15219 15330 15217 15217 15330 15219 15331 15331 15331 15356 15330 15330 15356 15331 15357 15357 15357 15480 15356 15356 15480 15357 15481 15481 15358 15481 15357 15357 15481 15358 15482 15482 15482 15529 15481 15481:15482 \ - 15485 15529 15529 15484 15529 15485 15485 15363 15484 15361 15361 15485 15361 15484 15484 15235 15363 15234 15234 15361 15234 15363 15363 15035 15239 15034 15034 15238 15034 15239 15239 15239 15035 15240 15240 15036 15240 15035 15035 15240 15036 15241 15241 15037 15241 15036 15036 15241 15037 15242 15242 15038 15242 15037 15037 15242 15038 15243 15243 15034 15238 15033 15033 15237 15033 15238 15238 15033 15237 15032 15032 15236 15032 15237 15237 15032 15236 15031 15031 15235 15031 15236 15236 15031 15235 15030 15030 15234 15030 15235 15235 15039 15243 15038 15038 15243 15039 15244 15244 15248 15376 15247 15247 15376 15248 15377 15377 15040 15244 15039 15039 15244 15040 15245 15245 15041 15245 15040 15040 15245 15041 15246 15246 15042 15246 15041 15041 15246 15042 15247 15247 15043 15247 15042 15042 15247 15043 15248 15248 15189 15315 15187 15187 15314 15187 15315 15315 15315 15340 15314 15314 15339 15314 15340 15340 15340 15463 15339 15339 15462 15339 15463 15463 15463 15510 15462 15462 15508 15462 15510 15510 15510 15531 15508 15508 15530 15508 15531 15531 15531 15655 15530 15530 15571 15655 15570 15570:15571 \ - 15530 15655 15655 15456 15570 15455 15455 15570 15456 15571 15571 15430 15454 15429 15429 15454 15430 15455 15455 15431 15455 15430 15430 15455 15431 15456 15456 15300 15426 15299 15299 15425 15299 15426 15426 15426 15300 15427 15427 15301 15427 15300 15300 15427 15301 15428 15428 15302 15428 15301 15301 15428 15302 15429 15429 15303 15429 15302 15302 15429 15303 15430 15430 15299 15425 15298 15298 15424 15298 15425 15425 15298 15424 15297 15297 15423 15297 15424 15424 15297 15423 15296 15296 15422 15296 15423 15423 15296 15422 15295 15295 15421 15295 15422 15422 15295 15421 15294 15294 15420 15294 15421 15421 15294 15420 15293 15293 15419 15293 15420 15420 15293 15419 15292 15292 15418 15292 15419 15419 15417 15441 15416 15416 15440 15416 15441 15441 15416 15440 15415 15415 15439 15415 15440 15440 15440 15554 15439 15439 15553 15439 15554 15554 15554 15638 15553 15553 15637 15553 15638 15638 15638 15676 15637 15637 15677 15637 15676 15676 15676 15817 15677 15677 15767 15817 15766 15766 15677 15817 15767 15767 15674 15766 15673 15673 15767 15766 15674 15674 15633 15673 15632 15632 15673 15633 15674 15674 15587 15629 15586 15586 15628 15586 15629 15629 15629 15587 15630 15630 15588 15630 15587 15587 15630 15588 15631 15631 15589 15631 15588 15588 15631 15589 15632 15632 15590 15632 15589 15589 15632 15590 15633 15633 15586 15628 15585 15585 15627 15585 15628 15628 15585 15627 15584 15584 15626 15584 15627 15627 15584 15626 15583 15583 15625 15583 15626 15626 15583 15625 15582 15582 15624 15582 15625 15625 15582 15624 15581 15581 15623 15581 15624 15624 15581 15623 15580 15580 15622 15580 15623 15623 15580 15622 15579 15579 15621 15579 15622 15622 15579 15621 15578 15578 15620 15578 15621 15621 15292 15418 15291 15291 15417 15291 15418 15418 15291 15417 15290 15290 15416 15290 15417 15417 15618 15658 15617 15617 15656 15617 15658 15658 15658 15750 15656 15656 15731 15656 15750 15750 15731 15750 15784 15784 15731 15784 15730 15730 15613 15730 15612 15612 15730 15613 15731 15731 15502 15611 15501 15501 15611 15502 15612 15612 15503 15612 15502 15502 15612 15503 15613 15613 15379 15501 15378 15378 15501 15379 15502 15502 15249 15377 15248 15248 15377 15249 15378 15378 15250 15378 15249 15249 15378 15250 15379 15379 15578 15620 15577 15577 15619 15577 15620 15620 15577 15619 15576 15576 15618 15576 15619 15619 15576 15618 15575 15575 15617 15575 15618 15618 15210:15211 \ - 15208 15208:15209 15208 15211 15211 15211 15210 15213 15213 15212:15213 \ - 15210 15210 15213 15212 15215 15215 15214:15215 15212 15212 15215 15214 15217 15217 15216:15217 \ - 15214 15214 15217 15216 15219 15219 15208:15209 15206 15206:15207 \ - 15206 15209 15209 15206:15207 15204 15204:15205 15204 15207 15207 15204:15205 \ - 15202 15202:15203 15202 15205 15205 15202:15203 15200 15200:15201 \ - 15200 15203 15203 15200:15201 15198 15198:15199 15198 15201 15201 15198:15199 \ - 15196 15196:15197 15196 15199 15199 15196:15197 15194 15194:15195 \ - 15194 15197 15197 15194:15195 15192 15192:15193 15192 15195 15195 15192:15193 \ - 15190 15190:15191 15190 15193 15193 15190:15191 15188 15188:15189 \ - 15188 15191 15191 15188:15189 15186 15186:15187 15186 15189 15189 15218:15219 \ - 15216 15216 15219 15218 15221 15221 15221 15331 15219 15219 15331 15221 15332 15332 15332 15357 15331 15331 15357 15332 15358 15358 15333 15358 15332 15332 15358 15333 15359 15359 15359 15482 15358 15358 15482 15359 15483 15483 15483 15485 15482 15482 15361 15485 15362 15362 15362 15485 15483 15483 15234 15361 15233 15233 15362 15233 15361 15361 15030 15234 15029 15029 15233 15029 15234 15234 13871 15035 13873 13873 15034 13873 15035 15035 15035 13871 15036 15036 13869 15036 13871 13871 15036 13869 15037 15037 13867 15037 13869 13869 15037 13867 15038 15038 13865 15038 13867 13867 15038 13865 15039 15039 13873 15034 13875 13875 15033 13875 15034 15034 13875 15033 13877 13877 15032 13877 15033 15033 13877 15032 13879 13879 15031 13879 15032 15032 13879 15031 13881 13881 15030 13881 15031 15031 13881 15030 13883 13883 15029 13883 15030 15030 13863 15039 13865 13865 15039 13863 15040 15040 15044 15248 15043 15043 15248 15044 15249 15249 13861 15040 13863 13863 15040 13861 15041 15041 13859 15041 13861 13861 15041 13859 15042 15042 13857 15042 13859 13859 15042 13857 15043 15043 13855 15043 13857 13857 15043 13855 15044 15044 15186:15187 \ - 15184 15184:15185 15184 15187 15187 15187 15314 15185 15185 15313 15185 15314 15314 15314 15339 15313 15313 15338 15313 15339 15339 15339 15462 15338 15338 15460 15338 15462 15462 15462 15508 15460 15460 15509 15460 15508 15508 15508 15530 15509 15509 15457 15509 15530 15530 15457 15530 15571 15571 15457 15571 15456 15456 15432 15456 15431 15431 15456 15432 15457 15457 15304 15430 15303 15303 15430 15304 15431 15431 15305 15431 15304 15304 15431 15305 15432 15432 15152 15300 15150 15150 15299 15150 15300 15300 15300 15152 15301 15301 15154 15301 15152 15152 15301 15154 15302 15302 15156 15302 15154 15154 15302 15156 15303 15303 15158 15303 15156 15156 15303 15158 15304 15304 15150 15299 15148 15148 15298 15148 15299 15299 15148 15298 15146 15146 15297 15146 15298 15298 15146 15297 15144 15144 15296 15144 15297 15297 15144 15296 15142 15142 15295 15142 15296 15296 15142 15295 15140 15140 15294 15140 15295 15295 15140 15294 15138 15138 15293 15138 15294 15294 15138 15293 15136 15136 15292 15136 15293 15293 15136 15292 15134 15134 15291 15134 15292 15292 15290 15416 15289 15289 15415 15289 15416 15416 15289 15415 15288 15288 15414 15288 15415 15415 15415 15439 15414 15414 15438 15414 15439 15439 15439 15553 15438 15438 15552 15438 15553 15553 15553 15637 15552 15552 15636 15552 15637 15637 15637 15677 15636 15636 15636 15677 15675 15675 15675 15677 15767 15767 15767 15674:15675 \ - 15675 15634 15674 15633 15633 15674 15634 15675 15675 15591 15633 15590 15590 15633 15591 15634 15634 15402 15587 15401 15401 15586 15401 15587 15587 15587 15402 15588 15588 15403 15588 15402 15402 15588 15403 15589 15589 15404 15589 15403 15403 15589 15404 15590 15590 15405 15590 15404 15404 15590 15405 15591 15591 15401 15586 15400 15400 15585 15400 15586 15586 15400 15585 15399 15399 15584 15399 15585 15585 15399 15584 15398 15398 15583 15398 15584 15584 15398 15583 15397 15397 15582 15397 15583 15583 15397 15582 15396 15396 15581 15396 15582 15582 15396 15581 15395 15395 15580 15395 15581 15581 15395 15580 15394 15394 15579 15394 15580 15580 15394 15579 15393 15393 15578 15393 15579 15579 15393 15578 15392 15392 15577 15392 15578 15578 15134 15291 15132 15132 15290 15132 15291 15291 15132 15290 15130 15130 15289 15130 15290 15290 15575 15617 15574 15574 15616 15574 15617 15617 15617 15656 15616 15616 15657 15616 15656 15656:15657 \ - 15656 15731 15731 15614 15731 15613 15613:15614 15657 15731 15731 15504 15613 15503 15503 15613 15504 15614 15614 15380 15502 15379 15379 15502 15380 15503 15503 15381 15503 15380 15380 15503 15381 15504 15504 15251 15379 15250 15250 15379 15251 15380 15380 15045 15249 15044 15044 15249 15045 15250 15250 15046 15250 15045 15045 15250 15046 15251 15251 15392 15577 15391 15391 15576 15391 15577 15577 15391 15576 15390 15390 15575 15390 15576 15576 15390 15575 15389 15389 15574 15389 15575 15575 15220:15221 \ - 15218 15218 15221 15220 15223 15223 15223 15332 15221 15221 15332 15223 15333 15333 15225 15333 15223 15223 15333 15225 15334 15334 15334 15359 15333 15333 15359 15334 15360 15360 15360 15483 15359 15359:15360 \ - 15362 15483 15483 15233 15362 15232 15232 15232 15362 15360 15360 15029 15233 15028 15028 15232 15028 15233 15233 13883 15029 13885 13885 15028 13885 15029 15029 13871:13872 \ - 13869 13869 13873:13874 13871 13871:13872 13871 13874 13874 13869:13870 \ - 13867 13867 13870 13869 13872 13872 13867:13868 13865 13865 13868 13867 13870 13870 13865:13866 \ - 13863 13863 13866 13865 13868 13868 13875:13876 13873 13873:13874 \ - 13873 13876 13876:13878 13875 13875:13876 13875 13878 13878:13880 \ - 13877 13877:13878 13877 13880 13880:13882 13879 13879:13880 \ - 13879 13882 13882:13884 13881 13881:13882 13881 13884 13884:13886 \ - 13883 13883:13884 13883 13886 13886 13863:13864 13861 13861 13864 13863 13866 13866 13853 15044 13855 13855 15044 13853 15045 15045 13861:13862 \ - 13859 13859 13862 13861 13864 13864 13859:13860 13857 13857 13860 13859 13862 13862 13857:13858 \ - 13855 13855 13858 13857 13860 13860 13855:13856 13853 13853 13856 13855 13858 13858 15184:15185 \ - 15182 15182:15183 15182 15185 15185 15185 15313 15183 15183 15312 15183 15313 15313 15313 15338 15312 15312 15337 15312 15338 15338 15338 15460 15337 15337 15461 15337 15460 15460 15460 15509 15461 15461 15461 15509 15458 15458 15458 15509 15457 15457 15433 15457 15432 15432 15457 15433 15458 15458 15306 15432 15305 15305 15432 15306 15433 15433 15160 15304 15158 15158 15304 15160 15305 15305 15162 15305 15160 15160 15305 15162 15306 15306 15151:15152 \ - 15149 15149:15150 15149 15152 15152 15152 15151 15154 15154 15153:15154 \ - 15151 15151 15154 15153 15156 15156 15155:15156 15153 15153 15156 15155 15158 15158 15157:15158 \ - 15155 15155 15158 15157 15160 15160 15149:15150 15147 15147:15148 \ - 15147 15150 15150 15147:15148 15145 15145:15146 15145 15148 15148 15145:15146 \ - 15143 15143:15144 15143 15146 15146 15143:15144 15141 15141:15142 \ - 15141 15144 15144 15141:15142 15139 15139:15140 15139 15142 15142 15139:15140 \ - 15137 15137:15138 15137 15140 15140 15137:15138 15135 15135:15136 \ - 15135 15138 15138 15135:15136 15133 15133:15134 15133 15136 15136 15133:15134 \ - 15131 15131:15132 15131 15134 15134 15130 15289 15128 15128 15288 15128 15289 15289 15128 15288 15126 15126 15287 15126 15288 15288 15288 15414 15287 15287 15413 15287 15414 15414 15414 15438 15413 15413 15437 15413 15438 15438 15438 15552 15437 15437 15551 15437 15552 15552 15552 15636 15551 15551 15635 15551 15636 15636 15635:15636 \ - 15675 15675 15635 15675 15634 15634 15592 15634 15591 15591 15634 15592 15635 15635 15406 15591 15405 15405 15591 15406 15592 15592 15275 15402 15274 15274 15401 15274 15402 15402 15402 15275 15403 15403 15276 15403 15275 15275 15403 15276 15404 15404 15277 15404 15276 15276 15404 15277 15405 15405 15278 15405 15277 15277 15405 15278 15406 15406 15274 15401 15273 15273 15400 15273 15401 15401 15273 15400 15272 15272 15399 15272 15400 15400 15272 15399 15271 15271 15398 15271 15399 15399 15271 15398 15270 15270 15397 15270 15398 15398 15270 15397 15269 15269 15396 15269 15397 15397 15269 15396 15268 15268 15395 15268 15396 15396 15268 15395 15267 15267 15394 15267 15395 15395 15267 15394 15266 15266 15393 15266 15394 15394 15266 15393 15265 15265 15392 15265 15393 15393 15265 15392 15264 15264 15391 15264 15392 15392 15131:15132 \ - 15129 15129:15130 15129 15132 15132 15129:15130 15127 15127:15128 \ - 15127 15130 15130 15389 15574 15388 15388 15572 15388 15574 15574 15574 15616 15572 15572 15615 15572 15616 15616 15616 15657 15615 15615 15615 15657 15614 15614 15505 15614 15504 15504 15614 15505 15615 15615 15382 15504 15381 15381 15504 15382 15505 15505 15252 15380 15251 15251 15380 15252 15381 15381 15253 15381 15252 15252 15381 15253 15382 15382 15047 15251 15046 15046 15251 15047 15252 15252 13851 15045 13853 13853 15045 13851 15046 15046 13849 15046 13851 13851 15046 13849 15047 15047 15264 15391 15263 15263 15390 15263 15391 15391 15263 15390 15262 15262 15389 15262 15390 15390 15262 15389 15261 15261 15388 15261 15389 15389 15222:15223 \ - 15220 15220 15223 15222 15225 15225 15224:15225 15222 15222 15225 15224 15227 15227 15227 15334 15225 15225 15227 15231 15334 15334 15231 15360 15334 15334 15231:15232 \ - 15360 15360 15028 15232 15026 15026 15231 15026 15232 15232 13885 15028 13887 13887 15026 13887 15028 15028 13887:13888 \ - 13885 13885:13886 13885 13888 13888 13853:13854 13851 13851 13854 13853 13856 13856 15182:15183 \ - 15180 15180:15181 15180 15183 15183 15183 15312 15181 15181 15311 15181 15312 15312 15312 15337 15311 15311 15335 15311 15337 15337 15337 15461 15335 15335 15335 15461 15459 15459 15459 15461 15458 15458 15434 15458 15433 15433 15458 15434 15459 15459 15307 15433 15306 15306 15433 15307 15434 15434 15164 15306 15162 15162 15306 15164 15307 15307 15159:15160 \ - 15157 15157 15160 15159 15162 15162 15161:15162 15159 15159 15162 15161 15164 15164 15127:15128 \ - 15125 15125:15126 15125 15128 15128 15125:15126 15123 15123:15124 \ - 15123 15126 15126 15126 15287 15124 15124 15286 15124 15287 15287 15287 15413 15286 15286 15411 15286 15413 15413 15413 15437 15411 15411 15435 15411 15437 15437 15437 15551 15435 15435 15550 15435 15551 15551 15551 15635 15550 15550 15593 15635 15592 15592 15550 15635 15593 15593 15407 15592 15406 15406 15592 15407 15593 15593 15279 15406 15278 15278 15406 15279 15407 15407 15095 15275 15093 15093 15274 15093 15275 15275 15275 15095 15276 15276 15097 15276 15095 15095 15276 15097 15277 15277 15099 15277 15097 15097 15277 15099 15278 15278 15101 15278 15099 15099 15278 15101 15279 15279 15093 15274 15091 15091 15273 15091 15274 15274 15091 15273 15089 15089 15272 15089 15273 15273 15089 15272 15087 15087 15271 15087 15272 15272 15087 15271 15085 15085 15270 15085 15271 15271 15085 15270 15083 15083 15269 15083 15270 15270 15083 15269 15081 15081 15268 15081 15269 15269 15081 15268 15079 15079 15267 15079 15268 15268 15079 15267 15077 15077 15266 15077 15267 15267 15077 15266 15075 15075 15265 15075 15266 15266 15075 15265 15073 15073 15264 15073 15265 15265 15073 15264 15071 15071 15263 15071 15264 15264 15261 15388 15260 15260 15386 15260 15388 15388 15388 15572 15386 15386 15573 15386 15572 15572 15572 15615 15573 15573 15506 15615 15505 15505 15573 15615 15506 15506 15383 15505 15382 15382 15505 15383 15506 15506 15254 15382 15253 15253 15382 15254 15383 15383 15048 15252 15047 15047 15252 15048 15253 15253 15049 15253 15048 15048 15253 15049 15254 15254 13847 15047 13849 13849 15047 13847 15048 15048 13851:13852 \ - 13849 13849 13852 13851 13854 13854 13849:13850 13847 13847 13850 13849 13852 13852 15071 15263 15069 15069 15262 15069 15263 15263 15069 15262 15067 15067 15261 15067 15262 15262 15067 15261 15065 15065 15260 15065 15261 15261 15226:15227 \ - 15224 15224 15227 15226 15229 15229 15229 15231 15227 15227 15027 15231 15229 15229 15026 15231 15027 15027 13887 15026 13889 13889 15027 13889 15026 15026 13889:13890 \ - 13887 13887:13888 13887 13890 13890 13798 13913 13796 13796 13912 13796 13913 13913 13913 13798 13914 13914 13796 13912 13794 13794 13911 13794 13912 13912 13794 13911 13792 13792 13910 13792 13911 13911 13800 13914 13798 13798 13914 13800 13915 13915 13792 13910 13790 13790 13909 13790 13910 13910 13790 13909 13788 13788 13908 13788 13909 13909 13788 13908 13786 13786 13907 13786 13908 13908 13786 13907 13784 13784 13906 13784 13907 13907 13784 13906 13782 13782 13905 13782 13906 13906 13782 13905 13780 13780 13904 13780 13905 13905 13780 13904 13778 13778 13903 13778 13904 13904 13778 13903 13776 13776 13902 13776 13903 13903 13802 13915 13800 13800 13915 13802 13916 13916 13808 13918 13806 13806 13917 13806 13918 13918 13918 13808 13919 13919 13806 13917 13804 13804 13916 13804 13917 13917 13804 13916 13802 13802 13810 13919 13808 13808 13919 13810 13920 13920 15180:15181 \ - 15178 15178:15179 15178 15181 15181 15181 15311 15179 15179 15310 15179 15311 15311 15311 15335 15310 15310 15336 15310 15335 15335:15336 \ - 15335 15459 15459 15336 15459 15434 15434 15308 15434 15307 15307:15308 \ - 15336 15434 15434 15166 15307 15164 15164 15307 15166 15308 15308 15163:15164 \ - 15161 15161 15164 15163 15166 15166 15123:15124 15121 15121:15122 \ - 15121 15124 15124 15124 15286 15122 15122 15285 15122 15286 15286 15286 15411 15285 15285 15412 15285 15411 15411 15411 15435 15412 15412 15436 15412 15435 15435 15435 15550 15436 15436 15408 15436 15550 15550 15408 15550 15593 15593 15408 15593 15407 15407 15280 15407 15279 15279 15407 15280 15408 15408 15103 15279 15101 15101 15279 15103 15280 15280 15094:15095 \ - 15092 15092:15093 15092 15095 15095 15095 15094 15097 15097 15096:15097 \ - 15094 15094 15097 15096 15099 15099 15098:15099 15096 15096 15099 15098 15101 15101 15100:15101 \ - 15098 15098 15101 15100 15103 15103 15092:15093 15090 15090:15091 \ - 15090 15093 15093 15090:15091 15088 15088:15089 15088 15091 15091 15088:15089 \ - 15086 15086:15087 15086 15089 15089 15086:15087 15084 15084:15085 \ - 15084 15087 15087 15084:15085 15082 15082:15083 15082 15085 15085 15082:15083 \ - 15080 15080:15081 15080 15083 15083 15080:15081 15078 15078:15079 \ - 15078 15081 15081 15078:15079 15076 15076:15077 15076 15079 15079 15076:15077 \ - 15074 15074:15075 15074 15077 15077 15074:15075 15072 15072:15073 \ - 15072 15075 15075 15072:15073 15070 15070:15071 15070 15073 15073 15070:15071 \ - 15068 15068:15069 15068 15071 15071 15065 15260 15063 15063 15259 15063 15260 15260 15260 15386 15259 15259 15387 15259 15386 15386 15386 15573 15387 15387 15387 15573 15507 15507 15507 15573 15506 15506 15384 15506 15383 15383 15506 15384 15507 15507 15255 15383 15254 15254 15383 15255 15384 15384 15050 15254 15049 15049 15254 15050 15255 15255 13845 15048 13847 13847 15048 13845 15049 15049 13843 15049 13845 13845 15049 13843 15050 15050 13847:13848 \ - 13845 13845 13848 13847 13850 13850 15068:15069 15066 15066:15067 \ - 15066 15069 15069 15066:15067 15064 15064:15065 15064 15067 15067 15064:15065 \ - 15062 15062:15063 15062 15065 15065 15228:15229 15226 15226 15229 15228 15230 15230 15230 15027 15229 15229 13889 15027 13891 13891 13891 15027 15230 15230 13891:13892 \ - 13889 13889:13890 13889 13892 13892 13776 13902 13773 13773 13901 13773 13902 13902 13797:13798 \ - 13795 13795:13796 13795 13798 13798 13798 13797 13800 13800 13799:13800 \ - 13797 13797 13800 13799 13802 13802 13795:13796 13793 13793:13794 \ - 13793 13796 13796 13793:13794 13791 13791:13792 13791 13794 13794 13791:13792 \ - 13789 13789:13790 13789 13792 13792 13789:13790 13787 13787:13788 \ - 13787 13790 13790 13787:13788 13785 13785:13786 13785 13788 13788 13785:13786 \ - 13783 13783:13784 13783 13786 13786 13783:13784 13781 13781:13782 \ - 13781 13784 13784 13781:13782 13779 13779:13780 13779 13782 13782 13779:13780 \ - 13777 13777:13778 13777 13780 13780 13777:13778 13775 13775:13776 \ - 13775 13778 13778 13775:13776 13772 13772:13773 13772 13776 13776 13801:13802 \ - 13799 13799 13802 13801 13804 13804 13812 13920 13810 13810 13920 13812 13921 13921 13807:13808 \ - 13805 13805:13806 13805 13808 13808 13808 13807 13810 13810 13809:13810 \ - 13807 13807 13810 13809 13812 13812 13805:13806 13803 13803:13804 \ - 13803 13806 13806 13803:13804 13801 13801 15178:15179 \ - 15175 15175:15176 15175 15179 15179 15179 15310 15176 15176 15309 15176 15310 15310 15310 15336 15309 15309 15309 15336 15308 15308 15168 15308 15166 15166 15308 15168 15309 15309 15165:15166 \ - 15163 15163 15166 15165 15168 15168 15121:15122 15119 15119:15120 \ - 15119 15122 15122 15122 15285 15120 15120 15284 15120 15285 15285 15285 15412 15284 15284 15284 15412 15410 15410 15412 15436 15410 15410 15410 15436 15409 15409 15409 15436 15408 15408 15281 15408 15280 15280 15408 15281 15409 15409 15105 15280 15103 15103 15280 15105 15281 15281 15102:15103 \ - 15100 15100 15103 15102 15105 15105 15062:15063 15060 15060:15061 \ - 15060 15063 15063 15063 15259 15061 15061 15258 15061 15259 15259 15259 15387 15258 15258 15258 15387 15385 15385 15385 15387 15507 15507 15385 15507 15384 15384 15256 15384 15255 15255 15384 15256 15385 15385 15051 15255 15050 15050 15255 15051 15256 15256 13841 15050 13843 13843 15050 13841 15051 15051 13845:13846 \ - 13843 13843 13846 13845 13848 13848 13843:13844 13841 13841 13844 13843 13846 13846 13814 13921 13812 13812 13921 13814 13922 13922 13816 13922 13814 13814 13922 13816 13923 13923 13893 15230 15228 15228 13893 13891 15230 15230 13893:13894 \ - 13891 13891:13892 13891 13894 13894 13773 13901 13774 13774 13898 13774 13901 13901 13901 13899 13898 13898 13772:13773 \ - 13771 13771 13774 13771 13773 13773 13795 14061 13797 13797 13793 14062 13795 13795 14061 13795 14062 14062 13797 14060 13799 13799 14060 13797 14061 14061 13799 14059 13801 13801 14059 13799 14060 14060 13791 14063 13793 13793 14062 13793 14063 14063 13789 14064 13791 13791 14063 13791 14064 14064 13787 14065 13789 13789 14064 13789 14065 14065 13785 14066 13787 13787 14065 13787 14066 14066 13783 14067 13785 13785 14066 13785 14067 14067 13781 14068 13783 13783 14067 13783 14068 14068 13779 14069 13781 13781 14068 13781 14069 14069 13777 14070 13779 13779 14069 13779 14070 14070 13775 14071 13777 13777 14070 13777 14071 14071 13772 14072 13775 13775 14071 13775 14072 14072 13771 14073 13772 13772 14072 13772 14073 14073 13801 14058 13803 13803 14058 13801 14059 14059 13811:13812 \ - 13809 13809 13812 13811 13814 13814 13805 14056 13807 13807 13803 14057 13805 13805 14056 13805 14057 14057 13807 14055 13809 13809 14055 13807 14056 14056 13809 14054 13811 13811 14054 13809 14055 14055 14057 13803 14058 14058 15175:15176 \ - 15174 15174 15177 15174 15176 15176 15176 15309 15177 15177 15170 15309 15168 15168 15177 15309 15170 15170 15167:15168 \ - 15165 15165 15168 15167 15170 15170 15119:15120 15116 15116:15117 \ - 15116 15120 15120 15120 15284 15117 15117 15283 15117 15284 15284 15283:15284 \ - 15410 15410 15283 15410 15282 15282 15409 15282 15410 15410 15282 15409 15281 15281 15107 15281 15105 15105 15281 15107 15282 15282 15104:15105 \ - 15102 15102 15105 15104 15107 15107 15060:15061 15057 15057:15058 \ - 15057 15061 15061 15061 15258 15058 15058 15257 15058 15258 15258 15257:15258 \ - 15385 15385 15257 15385 15256 15256 15052 15256 15051 15051 15256 15052 15257 15257 13839 15051 13841 13841 15051 13839 15052 15052 13841:13842 \ - 13839 13839 13842 13841 13844 13844 13818 13923 13816 13816 13923 13818 13924 13924 13813:13814 \ - 13811 13811 13814 13813 13816 13816 13815:13816 13813 13813 13816 13815 13818 13818 13893 13895 13894 13894 13899 13896 13898 13898 13771 13774 13829 13829 13774 13898 13829 13829 13897:13898 \ - 13896 13896 13900 13898 13897 13897 13829 13898 13900 13900 13829 14074 13771 13771 14073 13771 14074 14074 14061 14200 14060 14060 14062 14201 14061 14061 14200 14061 14201 14201 14063 14202 14062 14062 14201 14062 14202 14202 14060 14199 14059 14059 14199 14060 14200 14200 14059 14198 14058 14058 14198 14059 14199 14199 14064 14203 14063 14063 14202 14063 14203 14203 14065 14204 14064 14064 14203 14064 14204 14204 14066 14205 14065 14065 14204 14065 14205 14205 14067 14206 14066 14066 14205 14066 14206 14206 14068 14207 14067 14067 14206 14067 14207 14207 14069 14208 14068 14068 14207 14068 14208 14208 14070 14209 14069 14069 14208 14069 14209 14209 14071 14210 14070 14070 14209 14070 14210 14210 14072 14211 14071 14071 14210 14071 14211 14211 14073 14212 14072 14072 14211 14072 14212 14212 14074 14213 14073 14073 14212 14073 14213 14213 14058 14197 14057 14057 14197 14058 14198 14198 13811 14053 13813 13813 14053 13811 14054 14054 14056 14195 14055 14055 14057 14196 14056 14056 14195 14056 14196 14196 14196 14057 14197 14197 14055 14194 14054 14054 14194 14055 14195 14195 14054 14193 14053 14053 14193 14054 14194 14194 15174 15177 15173 15173 15173 15177 15172 15172 15172 15177 15170 15170 15169:15170 \ - 15167 15167 15170 15169 15172 15172 15116:15117 15115 15115 15118 15115 15117 15117 15117 15283 15118 15118 15111 15283 15109 15109 15282 15109 15283 15283 15118 15283 15111 15111 15109 15282 15107 15107 15106:15107 \ - 15104 15104 15107 15106 15109 15109 15057:15058 15056 15056 15059 15056 15058 15058 15058 15257 15059 15059 15053 15257 15052 15052 15059 15257 15053 15053 13837 15052 13839 13839 15052 13837 15053 15053 13839:13840 \ - 13837 13837 13840 13839 13842 13842 13820 13924 13818 13818 13924 13820 13925 13925 13822 13925 13820 13820 13925 13822 13926 13926 13817:13818 \ - 13815 13815 13818 13817 13820 13820 13813 14052 13815 13815 14052 13813 14053 14053 13815 14051 13817 13817 14051 13815 14052 14052 13900 14075 13829 13829 14074 13829 14075 14075 13900 14076 14075 14075 14075 14080 14074 14074 14080 14213 14074 14074 14199 14325 14198 14198 14200 14326 14199 14199 14325 14199 14326 14326 14201 14327 14200 14200 14326 14200 14327 14327 14202 14328 14201 14201 14327 14201 14328 14328 14198 14324 14197 14197 14324 14198 14325 14325 14203 14329 14202 14202 14328 14202 14329 14329 14204 14330 14203 14203 14329 14203 14330 14330 14205 14331 14204 14204 14330 14204 14331 14331 14206 14332 14205 14205 14331 14205 14332 14332 14207 14333 14206 14206 14332 14206 14333 14333 14208 14334 14207 14207 14333 14207 14334 14334 14209 14335 14208 14208 14334 14208 14335 14335 14210 14336 14209 14209 14335 14209 14336 14336 14211 14337 14210 14210 14336 14210 14337 14337 14212 14338 14211 14211 14337 14211 14338 14338 14213 14240 14212 14212 14212 14240 14338 14338 14079 14213 14080 14080 14213 14079 14214 14214 14214 14240 14213 14213 14197 14323 14196 14196 14323 14197 14324 14324 14053 14192 14052 14052 14192 14053 14193 14193:14194 \ - 14320 14193 14193 14195 14321 14194 14194 14320 14194 14321 14321 14196 14322 14195 14195 14321 14195 14322 14322 14322 14196 14323 14323 14193 14319 14192 14192 14319 14193 14320 14320 15171 15173 15172 15172 15171:15172 \ - 15169 15169 15115 15118 15114 15114 15114 15118 15113 15113 15113 15118 15111 15111 15108:15109 \ - 15106 15106 15109 15108 15111 15111 15110:15111 15108 15108 15111 15110 15113 15113 15056 15059 15055 15055 15055 15059 15054 15054 15054 15059 15053 15053 13836 15053 13837 13837 15053 13836 15054 15054 13837:13838 \ - 13836 13836 13838 13837 13840 13840 13819:13820 13817 13817 13820 13819 13822 13822 13821:13822 \ - 13819 13819 13822 13821 13824 13824 13824 13926 13822 13822 13926 13824 13927 13927 13817 14050 13819 13819 14050 13817 14051 14051:14052 \ - 14191 14051 14051 14191 14052 14192 14192 14051 14190 14050 14050 14190 14051 14191 14191 14076 14080 14075 14075 14077 14080 14076 14076 14080 14077 14079 14079 14324 14348 14323 14323 14325 14349 14324 14324 14348 14324 14349 14349 14326 14350 14325 14325 14349 14325 14350 14350 14327 14351 14326 14326 14350 14326 14351 14351 14328 14352 14327 14327 14351 14327 14352 14352 14329 14353 14328 14328 14352 14328 14353 14353 14330 14354 14329 14329 14353 14329 14354 14354 14331 14355 14330 14330 14354 14330 14355 14355 14332 14356 14331 14331 14355 14331 14356 14356 14333 14357 14332 14332 14356 14332 14357 14357 14334 14358 14333 14333 14357 14333 14358 14358 14335 14359 14334 14334 14358 14334 14359 14359 14336 14360 14335 14335 14359 14335 14360 14360 14337 14361 14336 14336 14360 14336 14361 14361 14338 14362 14337 14337 14361 14337 14362 14362 14240 14363 14338 14338 14362 14338 14363 14363 14240 14214 14239 14239:14240 \ - 14239 14363 14363 14078:14079 14077 14077 14079 14078 14082 14082 14082 14214 14079 14079 14214 14082 14215 14215 14215 14239 14214 14214 14323 14347 14322 14322 14347 14323 14348 14348 14192 14318 14191 14191 14318 14192 14319 14319 14319 14343 14318 14318 14320 14344 14319 14319 14343 14319 14344 14344 14321 14345 14320 14320 14344 14320 14345 14345 14322 14346 14321 14321 14345 14321 14346 14346 14346 14322 14347 14347 15112 15114 15113 15113 15112:15113 \ - 15110 15110 13835 15055 15054 15054 13835 15054 13836 13836 13836 13833 13835 13835 13833 13836 13838 13838 13819 14049 13821 13821 14049 13819 14050 14050 13823:13824 \ - 13821 13821 13821 14047 13823 13823 14047 13821 14049 14049 13824 13823 13826 13826 13826 13927 13824 13824 13834 13927 13826 13826 14050 14189 14049 14049 14189 14050 14190 14190:14191 \ - 14317 14190 14190 14317 14191 14318 14318 14190 14315 14189 14189 14315 14190 14317 14317 14348 14462 14347 14347 14349 14463 14348 14348 14462 14348 14463 14463 14350 14464 14349 14349 14463 14349 14464 14464 14351 14465 14350 14350 14464 14350 14465 14465 14352 14466 14351 14351 14465 14351 14466 14466 14353 14467 14352 14352 14466 14352 14467 14467 14354 14468 14353 14353 14467 14353 14468 14468 14355 14469 14354 14354 14468 14354 14469 14469 14356 14470 14355 14355 14469 14355 14470 14470 14357 14471 14356 14356 14470 14356 14471 14471 14358 14472 14357 14357 14471 14357 14472 14472 14359 14473 14358 14358 14472 14358 14473 14473 14360 14474 14359 14359 14473 14359 14474 14474 14361 14475 14360 14360 14474 14360 14475 14475 14361 14413 14434 14434 14362 14413 14361 14361 14361 14434 14475 14475 14363 14365 14362 14362 14365 14413 14362 14362 14239 14365 14363 14363 14239 14215 14241 14241 14241 14365 14239 14239 14081:14082 \ - 14078 14078 14082 14081 14084 14084 14084 14215 14082 14082 14215 14084 14216 14216 14216 14241 14215 14215 14347 14461 14346 14346 14461 14347 14462 14462 14318 14342 14317 14317 14342 14318 14343 14343 14343 14457 14342 14342 14344 14458 14343 14343 14457 14343 14458 14458 14345 14459 14344 14344 14458 14344 14459 14459 14346 14460 14345 14345 14459 14345 14460 14460 14460 14346 14461 14461 13835 13833 13832 13832 14049 14188 14047 14047 14188 14049 14189 14189 13825:13826 \ - 13823 13823 14048 13823 14047 14047 13823 14048 13825 13825 14047 14187 14048 14048 14187 14047 14188 14188 13826 13825 13828 13828 13828 13834 13826 13826 13831 13834 13830 13830 13830 13834 13828 13828 14316 14189 14315 14315 14189 14316 14188 14188 14315 14339 14316 14316:14317 \ - 14341 14315 14315 14339 14315 14341 14341 14341 14317 14342 14342 14462 14546 14461 14461 14463 14547 14462 14462 14546 14462 14547 14547 14464 14548 14463 14463 14547 14463 14548 14548 14465 14549 14464 14464 14548 14464 14549 14549 14466 14550 14465 14465 14549 14465 14550 14550 14467 14551 14466 14466 14550 14466 14551 14551 14468 14552 14467 14467 14551 14467 14552 14552 14469 14553 14468 14468 14552 14468 14553 14553 14470 14554 14469 14469 14553 14469 14554 14554 14471 14555 14470 14470 14554 14470 14555 14555 14472 14556 14471 14471 14555 14471 14556 14556 14473 14557 14472 14472 14556 14472 14557 14557 14474 14558 14473 14473 14557 14473 14558 14558 14475 14559 14474 14474 14558 14474 14559 14559 14475 14434 14559 14559 14412 14434 14413 14413 14434 14412 14435 14435 14435 14559 14434 14434 14413 14364 14412 14412 14364 14413 14365 14365 14365 14241 14364 14364 14241 14216 14242 14242 14242 14364 14241 14241 14083:14084 \ - 14081 14081 14084 14083 14086 14086 14086 14216 14084 14084 14216 14086 14217 14217 14217 14242 14216 14216 14461 14545 14460 14460 14545 14461 14546 14546 14342 14456 14341 14341 14456 14342 14457 14457 14457 14541 14456 14456 14458 14542 14457 14457 14541 14457 14542 14542 14459 14543 14458 14458 14542 14458 14543 14543 14460 14544 14459 14459 14543 14459 14544 14544 14544 14460 14545 14545 14187:14188 \ - 14314 14314 14188 14316 14314 14314 13827:13828 13825 13825 13827 13825 14046 14046 13825 14048 14046 14046 14046 14048 14045 14045 14048 14187 14045 14045 14045 14187 14043 14043 14186 14043 14187 14187 14187 14314 14186 14186 13827 13830 13828 13828 14340 14316 14339 14339 14316 14340 14314 14314 14339 14454 14340 14340:14341 \ - 14455 14339 14339 14454 14339 14455 14455 14455 14341 14456 14456 14546 14585 14545 14545 14547 14586 14546 14546 14585 14546 14586 14586 14548 14587 14547 14547 14586 14547 14587 14587 14549 14588 14548 14548 14587 14548 14588 14588 14550 14589 14549 14549 14588 14549 14589 14589 14551 14590 14550 14550 14589 14550 14590 14590 14552 14591 14551 14551 14590 14551 14591 14591 14553 14592 14552 14552 14591 14552 14592 14592 14554 14593 14553 14553 14592 14553 14593 14593 14555 14594 14554 14554 14593 14554 14594 14594 14556 14595 14555 14555 14594 14555 14595 14595 14557 14596 14556 14556 14595 14556 14596 14596 14558 14597 14557 14557 14596 14557 14597 14597 14559 14598 14558 14558 14597 14558 14598 14598 14435 14599 14559 14559 14598 14559 14599 14599 14366 14412 14364 14364 14412 14366 14414 14414 14414 14435 14412 14412 14435 14414 14436 14436 14436 14599 14435 14435 14364 14242 14366 14366 14242 14217 14243 14243 14243 14366 14242 14242 14085:14086 \ - 14083 14083 14086 14085 14088 14088 14088 14217 14086 14086 14217 14088 14218 14218 14218 14243 14217 14217 14545 14584 14544 14544 14584 14545 14585 14585 14456 14540 14455 14455 14540 14456 14541 14541:14542 \ - 14580 14541 14541 14581 14541 14580 14580 14541 14581 14540 14540 14543 14582 14542 14542 14580 14542 14582 14582 14544 14583 14543 14543 14582 14543 14583 14583 14583 14544 14584 14584 13827 14046 14044 14044:14045 \ - 14044 14046 14046 14044:14045 14042 14042:14043 14042 14045 14045 14042:14043 \ - 14040 14040:14041 14040 14043 14043 14043 14186 14041 14041 14185 14041 14186 14186 14186 14313 14185 14185 14313 14186 14314 14314 14314 14340 14313 14313 14312 14340 14454 14454 14313 14340 14312 14312 14312 14454 14497 14497 14454 14539 14497 14497 14455 14539 14454 14454 14539 14455 14540 14540 14585 14725 14584 14584 14586 14726 14585 14585 14725 14585 14726 14726 14587 14727 14586 14586 14726 14586 14727 14727 14588 14728 14587 14587 14727 14587 14728 14728 14589 14729 14588 14588 14728 14588 14729 14729 14590 14730 14589 14589 14729 14589 14730 14730 14591 14731 14590 14590 14730 14590 14731 14731 14592 14732 14591 14591 14731 14591 14732 14732 14593 14733 14592 14592 14732 14592 14733 14733 14594 14734 14593 14593 14733 14593 14734 14734 14595 14735 14594 14594 14734 14594 14735 14735 14596 14736 14595 14595 14735 14595 14736 14736 14597 14737 14596 14596 14736 14596 14737 14737:14738 \ - 14737 14597 14597 14738 14597:14598 14598:14599 14637 14598 14598 14598 14637 14738 14738 14599 14436 14600 14600 14600 14637 14599 14599 14366 14243 14367 14367 14367 14414 14366 14366 14414 14367 14415 14415 14415 14436 14414 14414 14436 14415 14437 14437 14437 14600 14436 14436 14243 14218 14244 14244 14244 14367 14243 14243 14087:14088 \ - 14085 14085 14088 14087 14090 14090 14090 14218 14088 14088 14218 14090 14219 14219 14219 14244 14218 14218 14584 14724 14583 14583 14724 14584 14725 14725 14539:14540 \ - 14579 14579 14540 14581 14579 14579:14580 14721 14581 14581:14582 \ - 14722 14580 14580 14721 14580 14722 14722 14579 14581 14671 14671 14581 14721 14671 14671 14583 14723 14582 14582 14722 14582 14723 14723 14723 14583 14724 14724 14040:14041 \ - 14038 14038:14039 14038 14041 14041 14041 14185 14039 14039 14184 14039 14185 14185 14185 14312 14184 14184 14312 14185 14313 14313 14311 14184 14312 14312 14312 14497 14311 14311 14496 14311 14497 14497 14497 14539 14496 14496 14538 14496 14539 14539 14539 14579 14538 14538 14725 14772 14724 14724 14726 14773 14725 14725 14772 14725 14773 14773 14727 14774 14726 14726 14773 14726 14774 14774 14728 14775 14727 14727 14774 14727 14775 14775 14729 14776 14728 14728 14775 14728 14776 14776 14730 14777 14729 14729 14776 14729 14777 14777 14731 14778 14730 14730 14777 14730 14778 14778 14732 14779 14731 14731 14778 14731 14779 14779 14733 14780 14732 14732 14779 14732 14780 14780 14734 14781 14733 14733 14780 14733 14781 14781 14735 14782 14734 14734 14781 14734 14782 14782 14736 14783 14735 14735 14782 14735 14783 14783 14737 14784 14736 14736 14783 14736 14784 14784 14738 14740 14737 14737 14740 14784 14737 14737 14637 14740 14738 14738 14637 14600 14636 14636 14636 14740 14637 14637 14600 14437 14601 14601 14601 14636 14600 14600 14367 14244 14368 14368 14368 14415 14367 14367 14415 14368 14416 14416 14416 14437 14415 14415 14437 14416 14438 14438 14438 14601 14437 14437 14244 14219 14245 14245 14245 14368 14244 14244 14089:14090 \ - 14087 14087 14090 14089 14092 14092 14092 14219 14090 14090 14219 14092 14220 14220 14220 14245 14219 14219 14724 14770 14723 14723 14770 14724 14772 14772 14578 14538 14579 14579 14671 14578:14579 \ - 14579 14671 14721 14670 14670 14720 14670 14721 14721 14721:14722 \ - 14720 14720 14723 14771 14722 14722 14722 14771 14720 14720 14671 14670 14578 14578 14771 14723 14770 14770 14038:14039 \ - 14036 14036:14037 14036 14039 14039 14039 14184 14037 14037 14183 14037 14184 14184 14184 14311 14183 14183 14310 14183 14311 14311 14311 14496 14310 14310 14495 14310 14496 14496 14496 14538 14495 14495 14537 14495 14538 14538 14538 14578 14537 14537 14772 14827 14770 14770 14773 14829 14772 14772 14827 14772 14829 14829 14774 14830 14773 14773 14829 14773 14830 14830 14775 14831 14774 14774 14830 14774 14831 14831 14776 14832 14775 14775 14831 14775 14832 14832 14777 14833 14776 14776 14832 14776 14833 14833 14778 14834 14777 14777 14833 14777 14834 14834 14779 14835 14778 14778 14834 14778 14835 14835 14780 14836 14779 14779 14835 14779 14836 14836 14781 14837 14780 14780 14836 14780 14837 14837 14782 14838 14781 14781 14837 14781 14838 14838 14783 14839 14782 14782 14838 14782 14839 14839 14784 14800 14783 14783 14783 14800 14839 14839 14739 14784 14740 14740 14784 14739 14785 14785 14785 14800 14784 14784 14740 14636 14739 14739 14636 14601 14638 14638 14638 14739 14636 14636 14601 14438 14602 14602 14602 14638 14601 14601 14368 14245 14369 14369 14369 14416 14368 14368 14416 14369 14417 14417 14417 14438 14416 14416 14438 14417 14439 14439 14439 14602 14438 14438 14245 14220 14246 14246 14246 14369 14245 14245 14091:14092 \ - 14089 14089 14092 14091 14094 14094 14094 14220 14092 14092 14220 14094 14221 14221 14221 14246 14220 14220 14828 14770 14827 14827 14770 14828 14771 14771 14577 14537 14578 14578 14578 14670 14577 14577 14669 14577 14670 14670 14670 14720 14669 14669 14719 14669 14720 14720 14720 14826 14719 14719:14720 \ - 14771 14826 14826 14771 14828 14826 14826 14036:14037 \ - 14034 14034:14035 14034 14037 14037 14037 14183 14035 14035 14182 14035 14183 14183 14183 14310 14182 14182 14309 14182 14310 14310 14310 14495 14309 14309 14494 14309 14495 14495 14495 14537 14494 14494 14536 14494 14537 14537 14537 14577 14536 14536 14827 14840 14828 14828:14829 \ - 14841 14827 14827 14840 14827 14841 14841 14830 14842 14829 14829 14841 14829 14842 14842 14831 14843 14830 14830 14842 14830 14843 14843 14832 14844 14831 14831 14843 14831 14844 14844 14833 14845 14832 14832 14844 14832 14845 14845 14834 14846 14833 14833 14845 14833 14846 14846 14835 14847 14834 14834 14846 14834 14847 14847 14836 14848 14835 14835 14847 14835 14848 14848 14837 14849 14836 14836 14848 14836 14849 14849 14838 14850 14837 14837 14849 14837 14850 14850 14839 14851 14838 14838 14850 14838 14851 14851 14800 14852 14839 14839 14851 14839 14852 14852 14800 14785 14799 14799:14800 \ - 14799 14852 14852 14739 14638 14741 14741 14741 14785 14739 14739 14785 14741 14786 14786 14786 14799 14785 14785 14638 14602 14639 14639 14639 14741 14638 14638 14602 14439 14603 14603 14603 14639 14602 14602 14369 14246 14370 14370 14370 14417 14369 14369 14417 14370 14418 14418 14418 14439 14417 14417 14439 14418 14440 14440 14440 14603 14439 14439 14246 14221 14247 14247 14247 14370 14246 14246 14093:14094 \ - 14091 14091 14094 14093 14096 14096 14096 14221 14094 14094 14221 14096 14222 14222 14222 14247 14221 14221 14825 14828 14840 14840 14826 14828 14825 14825 14576 14536 14577 14577 14577 14669 14576 14576 14668 14576 14669 14669 14669 14719 14668 14668 14718 14668 14719 14719 14719 14825 14718 14718 14825 14719 14826 14826 14034:14035 \ - 14032 14032:14033 14032 14035 14035 14035 14182 14033 14033 14181 14033 14182 14182 14182 14309 14181 14181 14308 14181 14309 14309 14309 14494 14308 14308 14493 14308 14494 14494 14494 14536 14493 14493 14535 14493 14536 14536 14536 14576 14535 14535 14825 14840 14864 14864 14841 14865 14840 14840 14840 14865 14864 14864 14842 14866 14841 14841 14865 14841 14866 14866 14843 14867 14842 14842 14866 14842 14867 14867 14844 14868 14843 14843 14867 14843 14868 14868 14845 14869 14844 14844 14868 14844 14869 14869 14846 14870 14845 14845 14869 14845 14870 14870 14847 14871 14846 14846 14870 14846 14871 14871 14848 14872 14847 14847 14871 14847 14872 14872 14849 14873 14848 14848 14872 14848 14873 14873 14850 14874 14849 14849 14873 14849 14874 14874 14851 14875 14850 14850 14874 14850 14875 14875 14852 14876 14851 14851 14875 14851 14876 14876 14799 14876 14852 14852 14799 14786 14801 14801 14801 14876 14799 14799 14741 14639 14742 14742 14742 14786 14741 14741 14786 14742 14787 14787 14787 14801 14786 14786 14639 14603 14640 14640 14640 14742 14639 14639 14603 14440 14604 14604 14604 14640 14603 14603 14370 14247 14371 14371 14371 14418 14370 14370 14418 14371 14419 14419 14419 14440 14418 14418 14440 14419 14441 14441 14441 14604 14440 14440 14247 14222 14248 14248 14248 14371 14247 14247 14095:14096 \ - 14093 14093 14096 14095 14098 14098 14098 14222 14096 14096 14222 14098 14223 14223 14223 14248 14222 14222 14824 14718 14825 14825 14825 14864 14824 14824 14575 14535 14576 14576 14576 14668 14575 14575 14667 14575 14668 14668 14668 14718 14667 14667 14717 14667 14718 14718 14718 14824 14717 14717 14032:14033 \ - 14030 14030:14031 14030 14033 14033 14033 14181 14031 14031 14180 14031 14181 14181 14181 14308 14180 14180 14307 14180 14308 14308 14308 14493 14307 14307 14492 14307 14493 14493 14493 14535 14492 14492 14534 14492 14535 14535 14535 14575 14534 14534 14863 14824 14864 14864 14864:14865 \ - 14863 14863 14863 14865 14921 14921 14866 14923 14865 14865 14865 14923 14921 14921 14867 14922 14866 14866 14923 14866 14922 14922 14868 14924 14867 14867 14922 14867 14924 14924 14869 14925 14868 14868 14924 14868 14925 14925 14870 14926 14869 14869 14925 14869 14926 14926 14871 14927 14870 14870 14926 14870 14927 14927 14872 14928 14871 14871 14927 14871 14928 14928 14873 14929 14872 14872 14928 14872 14929 14929 14873 14898 14905 14905 14874 14898 14873 14873 14873 14905 14929 14929 14875 14898 14874 14874 14876:14877 \ - 14875 14875 14877 14889 14875 14875 14889 14898 14875 14875:14876 \ - 14801 14877 14877 14801 14787 14802 14802 14802 14877 14801 14801 14742 14640 14743 14743 14743 14787 14742 14742 14787 14743 14788 14788 14788 14802 14787 14787 14640 14604 14641 14641 14641 14743 14640 14640 14604 14441 14605 14605 14605 14641 14604 14604 14371 14248 14372 14372 14372 14419 14371 14371 14419 14372 14420 14420 14420 14441 14419 14419 14441 14420 14442 14442 14442 14605 14441 14441 14248 14223 14249 14249 14249 14372 14248 14248 14097:14098 \ - 14095 14095 14098 14097 14100 14100 14100 14223 14098 14098 14223 14100 14224 14224 14224 14249 14223 14223 14823 14717 14824 14824 14824 14863 14823 14823 14574 14534 14575 14575 14575 14667 14574 14574 14666 14574 14667 14667 14667 14717 14666 14666 14716 14666 14717 14717 14717 14823 14716 14716 14030:14031 \ - 14028 14028:14029 14028 14031 14031 14031 14180 14029 14029 14179 14029 14180 14180 14180 14307 14179 14179 14306 14179 14307 14307 14307 14492 14306 14306 14491 14306 14492 14492 14492 14534 14491 14491 14533 14491 14534 14534 14534 14574 14533 14533 14862 14823 14863 14863 14863 14921 14862 14862 14920 14862 14921 14921 14921 14948 14920 14920 14923 14948 14921 14921:14922 \ - 14948 14923 14923:14924 14949 14922 14922 14948 14922 14949 14949 14925 14950 14924 14924 14949 14924 14950 14950 14926 14951 14925 14925 14950 14925 14951 14951 14927 14952 14926 14926 14951 14926 14952 14952 14928 14953 14927 14927 14952 14927 14953 14953 14929 14953 14928 14928 14905 14954 14929 14929 14953 14929 14954 14954 14897 14905 14898 14898 14905 14897 14906 14906 14905:14906 \ - 14954 14954 14898 14889 14897 14897 14877 14802 14878 14878 14878 14889 14877 14877 14889 14878 14888 14888 14888 14897 14889 14889 14802 14788 14803 14803 14803 14878 14802 14802 14743 14641 14744 14744 14744 14788 14743 14743 14788 14744 14789 14789 14789 14803 14788 14788 14641 14605 14642 14642 14642 14744 14641 14641 14605 14442 14606 14606 14606 14642 14605 14605 14372 14249 14373 14373 14373 14420 14372 14372 14420 14373 14421 14421 14421 14442 14420 14420 14442 14421 14443 14443 14443 14606 14442 14442 14249 14224 14250 14250 14250 14373 14249 14249 14099:14100 \ - 14097 14097 14100 14099 14102 14102 14102 14224 14100 14100 14224 14102 14225 14225 14225 14250 14224 14224 14822 14716 14823 14823 14823 14862 14822 14822 14573 14533 14574 14574 14574 14666 14573 14573 14665 14573 14666 14666 14666 14716 14665 14665 14715 14665 14716 14716 14716 14822 14715 14715 14028:14029 \ - 14026 14026:14027 14026 14029 14029 14029 14179 14027 14027 14178 14027 14179 14179 14179 14306 14178 14178 14305 14178 14306 14306 14306 14491 14305 14305 14490 14305 14491 14491 14491 14533 14490 14490 14532 14490 14533 14533 14533 14573 14532 14532 14861 14822 14862 14862 14862 14920 14861 14861 14919 14861 14920 14920 14920 14947 14919 14919 14947 14920 14948 14948 14948 14962 14947 14947 14949 14962 14948 14948 14950 14963 14949 14949 14962 14949 14963 14963 14951 14964 14950 14950 14963 14950 14964 14964 14952 14965 14951 14951 14964 14951 14965 14965 14953 14966 14952 14952 14965 14952 14966 14966 14954 14967 14953 14953 14966 14953 14967 14967 14906 14968 14954 14954 14967 14954 14968 14968 14897 14888 14899 14899 14899 14906 14897 14897 14906 14899 14907 14907 14906:14907 \ - 14968 14968 14878 14803 14879 14879 14879 14888 14878 14878 14888 14879 14890 14890 14890 14899 14888 14888 14803 14789 14804 14804 14804 14879 14803 14803 14744 14642 14745 14745 14745 14789 14744 14744 14789 14745 14790 14790 14790 14804 14789 14789 14642 14606 14643 14643 14643 14745 14642 14642 14606 14443 14607 14607 14607 14643 14606 14606 14373 14250 14374 14374 14374 14421 14373 14373 14421 14374 14422 14422 14422 14443 14421 14421 14443 14422 14444 14444 14444 14607 14443 14443 14250 14225 14251 14251 14251 14374 14250 14250 14101:14102 \ - 14099 14099 14102 14101 14104 14104 14104 14225 14102 14102 14225 14104 14226 14226 14226 14251 14225 14225 14821 14715 14822 14822 14822 14861 14821 14821 14572 14532 14573 14573 14573 14665 14572 14572 14664 14572 14665 14665 14665 14715 14664 14664 14714 14664 14715 14715 14715 14821 14714 14714 14026:14027 \ - 14024 14024:14025 14024 14027 14027 14027 14178 14025 14025 14177 14025 14178 14178 14178 14305 14177 14177 14304 14177 14305 14305 14305 14490 14304 14304 14489 14304 14490 14490 14490 14532 14489 14489 14531 14489 14532 14532 14532 14572 14531 14531 14860 14821 14861 14861 14861 14919 14860 14860 14918 14860 14919 14919 14919 14946 14918 14918 14946 14919 14947 14947 14947 14962 14946 14946 14961 14946 14962 14962 14962 14975 14961 14961:14963 \ - 14975 14975 14963 14982 14975 14975 14964 14982 14963 14963 14965 14983 14964 14964 14982 14964 14983 14983 14966 14984 14965 14965 14983 14965 14984 14984 14967 14984 14966 14966 14968 15010 14967 14967 14984 14967 15010 15010 14907 15023 14968 14968 15010 14968 15023 15023 14899 14890 14900 14900 14900 14907 14899 14899 14907 14900 14908 14908 14907:14908 \ - 15023 15023 14879 14804 14880 14880 14880 14890 14879 14879 14890 14880 14891 14891 14891 14900 14890 14890 14804 14790 14805 14805 14805 14880 14804 14804 14745 14643 14746 14746 14746 14790 14745 14745 14790 14746 14791 14791 14791 14805 14790 14790 14643 14607 14644 14644 14644 14746 14643 14643 14607 14444 14608 14608 14608 14644 14607 14607 14374 14251 14375 14375 14375 14422 14374 14374 14422 14375 14423 14423 14423 14444 14422 14422 14444 14423 14445 14445 14445 14608 14444 14444 14251 14226 14252 14252 14252 14375 14251 14251 14103:14104 \ - 14101 14101 14104 14103 14106 14106 14106 14226 14104 14104 14226 14106 14227 14227 14227 14252 14226 14226 14820 14714 14821 14821 14821 14860 14820 14820 14571 14531 14572 14572 14572 14664 14571 14571 14663 14571 14664 14664 14664 14714 14663 14663 14713 14663 14714 14714 14714 14820 14713 14713 14024:14025 \ - 14022 14022:14023 14022 14025 14025 14025 14177 14023 14023 14176 14023 14177 14177 14177 14304 14176 14176 14303 14176 14304 14304 14304 14489 14303 14303 14488 14303 14489 14489 14489 14531 14488 14488 14530 14488 14531 14531 14531 14571 14530 14530 14859 14820 14860 14860 14860 14918 14859 14859 14917 14859 14918 14918 14918 14945 14917 14917 14945 14918 14946 14946 14946 14961 14945 14945 14960 14945 14961 14961 14961 14974 14960 14960 14974 14961 14975 14975 14975 14982 14974 14974 14981 14974 14982 14982 14982 14990 14981 14981:14983 \ - 14990 14990 14983 14997 14990 14990 14983:14984 14997 14997 14984 15003 14997 14997 14984 15010 15003 15003 15009 15003 15010 15010 15023 15025 15010 15010 15010 15025 15009 15009 14908 15025 15023 15023 14900 14891 14901 14901 14901 14908 14900 14900 14908 14901 14909 14909 14909 15025 14908 14908 14880 14805 14881 14881 14881 14891 14880 14880 14891 14881 14892 14892 14892 14901 14891 14891 14805 14791 14806 14806 14806 14881 14805 14805 14746 14644 14747 14747 14747 14791 14746 14746 14791 14747 14792 14792 14792 14806 14791 14791 14644 14608 14645 14645 14645 14747 14644 14644 14608 14445 14609 14609 14609 14645 14608 14608 14375 14252 14376 14376 14376 14423 14375 14375 14423 14376 14424 14424 14424 14445 14423 14423 14445 14424 14446 14446 14446 14609 14445 14445 14252 14227 14253 14253 14253 14376 14252 14252 14105:14106 \ - 14103 14103 14106 14105 14108 14108 14108 14227 14106 14106 14227 14108 14228 14228 14228 14253 14227 14227 14819 14713 14820 14820 14820 14859 14819 14819 14570 14530 14571 14571 14571 14663 14570 14570 14662 14570 14663 14663 14663 14713 14662 14662 14712 14662 14713 14713 14713 14819 14712 14712 14022:14023 \ - 14020 14020:14021 14020 14023 14023 14023 14176 14021 14021 14175 14021 14176 14176 14176 14303 14175 14175 14302 14175 14303 14303 14303 14488 14302 14302 14487 14302 14488 14488 14488 14530 14487 14487 14529 14487 14530 14530 14530 14570 14529 14529 14858 14819 14859 14859 14859 14917 14858 14858 14916 14858 14917 14917 14917 14944 14916 14916 14944 14917 14945 14945 14945 14960 14944 14944 14959 14944 14960 14960 14960 14973 14959 14959 14973 14960 14974 14974 14974 14981 14973 14973 14980 14973 14981 14981 14981 14989 14980 14980 14989 14981 14990 14990 14990 14996 14989 14989 14996 14990 14997 14997 14997 15003 14996 14996 14996 15003 14995 14995 15002 14995 15003 15003 15003 15008 15002 15002 15008 15003 15009 15009 15009 15015 15008 15008 15015 15009 15024 15024 15024 15009 15025 15025 15024:15025 \ - 14909 14909 14901 14892 14902 14902 14902 14909 14901 14901 14909 14902 14910 14910 15024 14909:14910 \ - 14910 14881 14806 14882 14882 14882 14892 14881 14881 14892 14882 14893 14893 14893 14902 14892 14892 14806 14792 14807 14807 14807 14882 14806 14806 14747 14645 14748 14748 14748 14792 14747 14747 14792 14748 14793 14793 14793 14807 14792 14792 14645 14609 14646 14646 14646 14748 14645 14645 14609 14446 14610 14610 14610 14646 14609 14609 14376 14253 14377 14377 14377 14424 14376 14376 14424 14377 14425 14425 14425 14446 14424 14424 14446 14425 14447 14447 14447 14610 14446 14446 14253 14228 14254 14254 14254 14377 14253 14253 14107:14108 \ - 14105 14105 14108 14107 14110 14110 14110 14228 14108 14108 14228 14110 14229 14229 14229 14254 14228 14228 14818 14712 14819 14819 14819 14858 14818 14818 14569 14529 14570 14570 14570 14662 14569 14569 14661 14569 14662 14662 14662 14712 14661 14661 14711 14661 14712 14712 14712 14818 14711 14711 14020:14021 \ - 14018 14018:14019 14018 14021 14021 14021 14175 14019 14019 14174 14019 14175 14175 14175 14302 14174 14174 14301 14174 14302 14302 14302 14487 14301 14301 14486 14301 14487 14487 14487 14529 14486 14486 14528 14486 14529 14529 14529 14569 14528 14528 14857 14818 14858 14858 14858 14916 14857 14857 14915 14857 14916 14916 14916 14943 14915 14915 14943 14916 14944 14944 14944 14959 14943 14943 14958 14943 14959 14959 14959 14972 14958 14958 14972 14959 14973 14973 14973 14980 14972 14972 14979 14972 14980 14980 14980 14988 14979 14979 14988 14980 14989 14989 14989 14995 14988 14988 14995 14989 14996 14996 14994 14988 14995 14995 14995 15002 14994 14994 15001 14994 15002 15002 15002 15007 15001 15001 15007 15002 15008 15008 15008 15014 15007 15007 15014 15008 15015 15015 15015 14910 15014 15014 14910 15015 15024 15024 14902 14893 14903 14903 14903 14910 14902 14902:14903 \ - 15019 14910 14910 15019 15014 14910 14910 14882 14807 14883 14883 14883 14893 14882 14882 14893 14883 14894 14894 14894 14903 14893 14893 14807 14793 14808 14808 14808 14883 14807 14807 14748 14646 14749 14749 14749 14793 14748 14748 14793 14749 14794 14794 14794 14808 14793 14793 14646 14610 14647 14647 14647 14749 14646 14646 14610 14447 14611 14611 14611 14647 14610 14610 14377 14254 14378 14378 14378 14425 14377 14377 14425 14378 14426 14426 14426 14447 14425 14425 14447 14426 14448 14448 14448 14611 14447 14447 14254 14229 14255 14255 14255 14378 14254 14254 14109:14110 \ - 14107 14107 14110 14109 14112 14112 14112 14229 14110 14110 14229 14112 14230 14230 14230 14255 14229 14229 14817 14711 14818 14818 14818 14857 14817 14817 14568 14528 14569 14569 14569 14661 14568 14568 14660 14568 14661 14661 14661 14711 14660 14660 14710 14660 14711 14711 14711 14817 14710 14710 14018:14019 \ - 14016 14016:14017 14016 14019 14019 14019 14174 14017 14017 14173 14017 14174 14174 14174 14301 14173 14173 14300 14173 14301 14301 14301 14486 14300 14300 14485 14300 14486 14486 14486 14528 14485 14485 14527 14485 14528 14528 14528 14568 14527 14527 14856 14817 14857 14857 14857 14915 14856 14856 14914 14856 14915 14915 14915 14942 14914 14914 14942 14915 14943 14943 14943 14958 14942 14942 14957 14942 14958 14958 14958 14971 14957 14957 14971 14958 14972 14972 14972 14979 14971 14971 14978 14971 14979 14979 14979 14987 14978 14978 14987 14979 14988 14988 14988 14994 14987 14987 14993 14987 14994 14994 14994 15001 14993 14993 15000 14993 15001 15001 15001 15006 15000 15000 15006 15001 15007 15007 15007 15013 15006 15006 15013 15007 15014 15014 15014 15019 15013 15013 14903 14894 14904 14904 14904 15019 14903 14903 15018 15013 15019 15019 15018:15019 \ - 14904 14904 14883 14808 14884 14884 14884 14894 14883 14883 14894 14884 14895 14895 14895 14904 14894 14894 14808 14794 14809 14809 14809 14884 14808 14808 14749 14647 14750 14750 14750 14794 14749 14749 14794 14750 14795 14795 14795 14809 14794 14794 14647 14611 14648 14648 14648 14750 14647 14647 14611 14448 14612 14612 14612 14648 14611 14611 14378 14255 14379 14379 14379 14426 14378 14378 14426 14379 14427 14427 14427 14448 14426 14426 14448 14427 14449 14449 14449 14612 14448 14448 14255 14230 14256 14256 14256 14379 14255 14255 14111:14112 \ - 14109 14109 14112 14111 14114 14114 14114 14230 14112 14112 14230 14114 14231 14231 14231 14256 14230 14230 14816 14710 14817 14817 14817 14856 14816 14816 14567 14527 14568 14568 14568 14660 14567 14567 14659 14567 14660 14660 14660 14710 14659 14659 14709 14659 14710 14710 14710 14816 14709 14709 14016:14017 \ - 14014 14014:14015 14014 14017 14017 14017 14173 14015 14015 14172 14015 14173 14173 14173 14300 14172 14172 14299 14172 14300 14300 14300 14485 14299 14299 14484 14299 14485 14485 14485 14527 14484 14484 14526 14484 14527 14527 14527 14567 14526 14526 14855 14816 14856 14856 14856 14914 14855 14855 14913 14855 14914 14914 14914 14941 14913 14913 14941 14914 14942 14942 14942 14957 14941 14941 14955 14941 14957 14957 14957 14970 14955 14955 14970 14957 14971 14971 14971 14978 14970 14970 14976 14970 14978 14978 14978 14986 14976 14976 14986 14978 14987 14987 14987 14993 14986 14986 14991 14986 14993 14993 14993 15000 14991 14991 14998 14991 15000 15000 15000 15005 14998 14998 15005 15000 15006 15006 15006 15011 15005 15005 15011 15006 15013 15013 15013 15018 15011 15011 14895 15022 14904 14904 15018 14904 15022 15022 15016 15011 15018 15018 15018 15022 15016 15016 14884 14809 14885 14885 14885 14895 14884 14884 14895 14885 14896 14896 15022 14895 15020 15020 14896 15020 14895 14895 14809 14795 14810 14810 14810 14885 14809 14809 14750 14648 14751 14751 14751 14795 14750 14750 14795 14751 14796 14796 14796 14810 14795 14795 14648 14612 14649 14649 14649 14751 14648 14648 14612 14449 14613 14613 14613 14649 14612 14612 14379 14256 14380 14380 14380 14427 14379 14379 14427 14380 14428 14428 14428 14449 14427 14427 14449 14428 14450 14450 14450 14613 14449 14449 14256 14231 14257 14257 14257 14380 14256 14256 14113:14114 \ - 14111 14111 14114 14113 14116 14116 14116 14231 14114 14114 14231 14116 14232 14232 14232 14257 14231 14231 14815 14709 14816 14816 14816 14855 14815 14815 14566 14526 14567 14567 14567 14659 14566 14566 14658 14566 14659 14659 14659 14709 14658 14658 14708 14658 14709 14709 14709 14815 14708 14708 14014:14015 \ - 14012 14012:14013 14012 14015 14015 14015 14172 14013 14013 14171 14013 14172 14172 14172 14299 14171 14171 14298 14171 14299 14299 14299 14484 14298 14298 14483 14298 14484 14484 14484 14526 14483 14483 14525 14483 14526 14526 14526 14566 14525 14525 14854 14815 14855 14855 14855 14913 14854 14854 14911 14854 14913 14913 14913 14940 14911 14911 14940 14913 14941 14941 14941 14955 14940 14940 14956 14940 14955 14955 14955 14969 14956 14956 14969 14955 14970 14970 14970 14976 14969 14969 14977 14969 14976 14976 14976 14985 14977 14977 14985 14976 14986 14986 14986 14991 14985 14985 14992 14985 14991 14991 14991 14998 14992 14992 14999 14992 14998 14998 14998 15004 14999 14999 15004 14998 15005 15005 15005 15011 15004 15004 15012 15004 15011 15011 15011 15016 15012 15012 15020 15016 15022 15022 15017 15012 15016 15016 15016 15020 15017 15017 14885 14810 14886 14886 14886 14896 14885 14885 15020 14896 15021 15021 14887 15021 14896 14896 14887 14896 14886 14886 15021 15017 15020 15020 14810 14796 14811 14811 14811 14886 14810 14810 14751 14649 14752 14752 14752 14796 14751 14751 14796 14752 14797 14797 14797 14811 14796 14796 14649 14613 14650 14650 14650 14752 14649 14649 14613 14450 14614 14614 14614 14650 14613 14613 14380 14257 14381 14381 14381 14428 14380 14380 14428 14381 14429 14429 14429 14450 14428 14428 14450 14429 14451 14451 14451 14614 14450 14450 14257 14232 14258 14258 14258 14381 14257 14257 14115:14116 \ - 14113 14113 14116 14115 14118 14118 14118 14232 14116 14116 14232 14118 14233 14233 14233 14258 14232 14232 14813 14708 14815 14815 14815 14854 14813 14813 14565 14525 14566 14566 14566 14658 14565 14565 14657 14565 14658 14658 14658 14708 14657 14657 14707 14657 14708 14708 14708 14813 14707 14707 14012:14013 \ - 14010 14010:14011 14010 14013 14013 14013 14171 14011 14011 14170 14011 14171 14171 14171 14298 14170 14170 14297 14170 14298 14298 14298 14483 14297 14297 14482 14297 14483 14483 14483 14525 14482 14482 14524 14482 14525 14525 14525 14565 14524 14524 14853 14813 14854 14854 14854 14911 14853 14853 14912 14853 14911 14911 14939 14911 14940 14940 14912 14911 14939 14939:14940 \ - 14956 14939 14939 14939 14956 14938 14938 14937 14956 14969 14969 14938 14956 14937 14937 14969 14977 14937 14937 14937 14977 14936 14936 14977 14985 14936 14936 14936 14985 14935 14935 14985 14992 14935 14935 14935 14992 14934 14934 14992 14999 14934 14934 14934 14999 14933 14933 14999 15004 14933 14933 14933 15004 14932 14932 15004 15012 14932 14932 15012 15017 14932 14932 14932 15017 14930 14930 15017 15021 14930 14930 14886 14811 14887 14887 14930 15021 14931 14931 15021 14887 14931 14931 14812 14887 14811 14811:14812 \ - 14756 14887 14887 14757 14887 14756 14756:14757 14931 14887 14887 14811 14797 14812 14812 14752 14650 14753 14753 14753 14797 14752 14752 14798 14797 14753 14753 14798 14812 14797 14797 14650 14614 14651 14651 14651 14753 14650 14650 14614 14451 14615 14615 14615 14651 14614 14614 14381 14258 14382 14382 14382 14429 14381 14381 14429 14382 14430 14430 14430 14451 14429 14429 14451 14430 14452 14452 14452 14615 14451 14451 14258 14233 14259 14259 14259 14382 14258 14258 14117:14118 \ - 14115 14115 14118 14117 14120 14120 14120 14233 14118 14118 14233 14120 14234 14234 14234 14259 14233 14233 14814 14707 14813 14813 14813 14853 14814 14814 14564 14524 14565 14565 14565 14657 14564 14564 14656 14564 14657 14657 14657 14707 14656 14656 14706 14656 14707 14707 14707 14814 14706 14706 14010:14011 \ - 14008 14008:14009 14008 14011 14011 14011 14170 14009 14009 14169 14009 14170 14170 14170 14297 14169 14169 14296 14169 14297 14297 14297 14482 14296 14296 14481 14296 14482 14482 14482 14524 14481 14481 14523 14481 14524 14524 14524 14564 14523 14523 14768 14814 14853 14853 14853 14912 14768 14768 14768 14912 14767 14767 14767 14912 14939 14939 14767 14939 14766 14766 14938 14766 14939 14939 14766 14938 14765 14765 14937 14765 14938 14938 14765 14937 14764 14764 14936 14764 14937 14937 14764 14936 14763 14763 14935 14763 14936 14936 14763 14935 14762 14762 14934 14762 14935 14935 14762 14934 14761 14761 14933 14761 14934 14934 14761 14933 14760 14760 14932 14760 14933 14933 14760 14932 14759 14759 14930 14759 14932 14932 14759 14930 14758 14758 14931 14758 14930 14930 14758 14931 14757 14757 14798 14755 14812 14812 14756 14812 14755 14755 14692 14756 14691 14691 14755 14691 14756 14756 14756 14692 14757 14757 14693 14757 14692 14692 14757 14693 14758 14758 14753 14651 14754 14754 14798 14753:14754 \ - 14754 14754:14755 14798 14798 14651 14615 14652 14652 14652 14754 14651 14651 14615 14452 14616 14616 14616 14652 14615 14615 14382 14259 14383 14383 14383 14430 14382 14382 14430 14383 14431 14431 14431 14452 14430 14430 14452 14431 14453 14453 14453 14616 14452 14452 14259 14234 14260 14260 14260 14383 14259 14259 14119:14120 \ - 14117 14117 14120 14119 14122 14122 14122 14234 14120 14120 14234 14122 14235 14235 14235 14260 14234 14234 14706 14814 14769 14769 14769 14814 14768 14768 14563 14523 14564 14564 14564 14656 14563 14563 14655 14563 14656 14656 14656 14706 14655 14655 14705 14655 14706 14706 14705:14706 \ - 14769 14769 14008:14009 14006 14006:14007 14006 14009 14009 14009 14169 14007 14007 14168 14007 14169 14169 14169 14296 14168 14168 14295 14168 14296 14296 14296 14481 14295 14295 14480 14295 14481 14481 14481 14523 14480 14480 14522 14480 14523 14523 14523 14563 14522 14522 14704 14768 14703 14703 14767 14703 14768 14768 14768 14704 14769 14769 14703 14767 14702 14702 14766 14702 14767 14767 14702 14766 14701 14701 14765 14701 14766 14766 14701 14765 14700 14700 14764 14700 14765 14765 14700 14764 14699 14699 14763 14699 14764 14764 14699 14763 14698 14698 14762 14698 14763 14763 14698 14762 14697 14697 14761 14697 14762 14762 14697 14761 14696 14696 14760 14696 14761 14761 14696 14760 14695 14695 14759 14695 14760 14760 14695 14759 14694 14694 14758 14694 14759 14759 14694 14758 14693 14693 14691 14755 14689 14689 14754 14689 14755 14755 14674 14691 14672 14672 14689 14672 14691 14691 14691 14674 14692 14692 14675 14692 14674 14674 14692 14675 14693 14693 14676 14693 14675 14675 14693 14676 14694 14694 14652 14690 14754 14754 14690 14689 14754 14754 14652 14616 14653 14653 14653 14690 14652 14652 14616 14453 14617 14617 14617 14653 14616 14616 14383 14260 14384 14384 14384 14431 14383 14383 14431 14384 14432 14432 14432 14453 14431 14431:14432 \ - 14499 14453 14453 14499 14617 14453 14453 14260 14235 14261 14261 14261 14384 14260 14260 14121:14122 \ - 14119 14119 14122 14121 14124 14124 14124 14235 14122 14122 14235 14124 14236 14236 14236 14261 14235 14235 14705 14769 14704 14704 14562 14522 14563 14563 14563 14655 14562 14562 14654 14562 14655 14655 14655 14705 14654 14654 14688 14705 14687 14687 14704 14687 14705 14705 14654 14705 14688 14688 14006:14007 \ - 14004 14004:14005 14004 14007 14007 14007 14168 14005 14005 14167 14005 14168 14168 14168 14295 14167 14167 14294 14167 14295 14295 14295 14480 14294 14294 14479 14294 14480 14480 14480 14522 14479 14479 14521 14479 14522 14522 14522 14562 14521 14521 14686 14703 14685 14685 14702 14685 14703 14703 14703 14686 14704 14704 14687 14704 14686 14686 14685 14702 14684 14684 14701 14684 14702 14702 14684 14701 14683 14683 14700 14683 14701 14701 14683 14700 14682 14682 14699 14682 14700 14700 14682 14699 14681 14681 14698 14681 14699 14699 14681 14698 14680 14680 14697 14680 14698 14698 14680 14697 14679 14679 14696 14679 14697 14697 14679 14696 14678 14678 14695 14678 14696 14696 14678 14695 14677 14677 14694 14677 14695 14695 14677 14694 14676 14676 14672 14689 14673 14673 14690 14673 14689 14689 14620 14672 14619 14619 14673 14619 14672 14672 14672 14620 14674 14674 14621 14674 14620 14620 14674 14621 14675 14675 14622 14675 14621 14621 14675 14622 14676 14676 14623 14676 14622 14622 14676 14623 14677 14677 14673 14690 14653 14653 14617:14618 \ - 14653 14653 14618 14673 14653 14653 14498 14617 14499 14499:14500 \ - 14617 14498 14498 14617 14500 14618 14618 14384 14261 14385 14385 14385 14432 14384 14384 14432 14385 14433 14433 14433 14499 14432 14432 14499 14433 14498 14498 14261 14236 14262 14262 14262 14385 14261 14261 14123:14124 \ - 14121 14121 14124 14123 14126 14126 14126 14236 14124 14124 14236 14126 14237 14237 14237 14262 14236 14236 14560 14521 14562 14562 14562 14654 14560 14560 14635 14560 14654 14654 14635 14654 14688 14688 14634 14687 14633 14633 14686 14633 14687 14687 14687 14634 14688 14688 14635 14688 14634 14634 14004:14005 \ - 14002 14002:14003 14002 14005 14005 14005 14167 14003 14003 14166 14003 14167 14167 14167 14294 14166 14166 14293 14166 14294 14294 14294 14479 14293 14293 14478 14293 14479 14479 14479 14521 14478 14478 14520 14478 14521 14521 14521 14560 14520 14520 14632 14685 14631 14631 14684 14631 14685 14685 14685 14632 14686 14686 14633 14686 14632 14632 14631 14684 14630 14630 14683 14630 14684 14684 14630 14683 14629 14629 14682 14629 14683 14683 14629 14682 14628 14628 14681 14628 14682 14682 14628 14681 14627 14627 14680 14627 14681 14681 14627 14680 14626 14626 14679 14626 14680 14680 14626 14679 14625 14625 14678 14625 14679 14679 14625 14678 14624 14624 14677 14624 14678 14678 14624 14677 14623 14623 14619 14673 14618 14618 14502 14619 14501 14501 14618 14501 14619 14619 14619 14502 14620 14620 14503 14620 14502 14502 14620 14503 14621 14621 14504 14621 14503 14503 14621 14504 14622 14622 14505 14622 14504 14504 14622 14505 14623 14623 14506 14623 14505 14505 14623 14506 14624 14624 14501 14618 14500 14500 14388 14498 14433 14433 14390 14498 14388 14388 14498 14390 14500 14500 14391 14500 14390 14390 14500 14391 14501 14501 14385 14262 14386 14386 14386 14433 14385 14385:14386 \ - 14389 14433 14433 14388 14433 14389 14389 14262 14237 14263 14263 14263 14386 14262 14262 14125:14126 \ - 14123 14123 14126 14125 14128 14128 14128 14237 14126 14126 14237 14128 14238 14238 14238 14263 14237 14237 14561 14520 14560 14560:14561 \ - 14560 14635 14635 14518 14635 14517 14517 14634 14517 14635 14635 14518 14561 14635 14635 14516 14633 14515 14515 14632 14515 14633 14633 14633 14516 14634 14634 14517 14634 14516 14516 14002:14003 \ - 14000 14000:14001 14000 14003 14003 14003 14166 14001 14001 14165 14001 14166 14166 14166 14293 14165 14165 14292 14165 14293 14293 14293 14478 14292 14292 14476 14292 14478 14478 14478 14520 14476 14476 14519 14476 14520 14520 14520 14561 14519 14519 14514 14631 14513 14513 14630 14513 14631 14631 14631 14514 14632 14632 14515 14632 14514 14514 14513 14630 14512 14512 14629 14512 14630 14630 14512 14629 14511 14511 14628 14511 14629 14629 14511 14628 14510 14510 14627 14510 14628 14628 14510 14627 14509 14509 14626 14509 14627 14627 14509 14626 14508 14508 14625 14508 14626 14626 14508 14625 14507 14507 14624 14507 14625 14625 14507 14624 14506 14506 14393 14502 14392 14392 14501 14392 14502 14502 14502 14393 14503 14503 14394 14503 14393 14393 14503 14394 14504 14504 14395 14504 14394 14394 14504 14395 14505 14505 14396 14505 14395 14395 14505 14396 14506 14506 14392 14501 14391 14391 14397 14506 14396 14396 14506 14397 14507 14507 14267 14388 14265 14265 14389 14265 14388 14388 14388 14267 14390 14390 14268 14390 14267 14267 14390 14268 14391 14391 14269 14391 14268 14268 14391 14269 14392 14392 14386 14263 14387 14387 14387 14389 14386 14386 14265 14389 14266 14266 14266 14389 14387 14387 14263 14238 14264 14264 14264 14387 14263 14263 14127:14128 \ - 14125 14125 14128 14127 14130 14130 14130 14238 14128 14128 14130 14135 14238 14238 14135 14264 14238 14238 14519 14561 14518 14518 14408 14517 14407 14407 14516 14407 14517 14517 14517 14408 14518 14518 14409 14518 14408 14408 14518 14409 14519 14519 14406 14515 14405 14405 14514 14405 14515 14515 14515 14406 14516 14516 14407 14516 14406 14406 14000:14001 \ - 13998 13998:13999 13998 14001 14001 14001 14165 13999 13999 14164 13999 14165 14165 14165 14292 14164 14164 14290 14164 14292 14292 14292 14476 14290 14290 14477 14290 14476 14476 14476 14519 14477 14477 14410 14519 14409 14409 14477 14519 14410 14410 14405 14514 14404 14404 14513 14404 14514 14514 14404 14513 14403 14403 14512 14403 14513 14513 14403 14512 14402 14402 14511 14402 14512 14512 14402 14511 14401 14401 14510 14401 14511 14511 14401 14510 14400 14400 14509 14400 14510 14510 14400 14509 14399 14399 14508 14399 14509 14509 14399 14508 14398 14398 14507 14398 14508 14508 14398 14507 14397 14397 14271 14393 14270 14270 14392 14270 14393 14393 14393 14271 14394 14394 14272 14394 14271 14271 14394 14272 14395 14395 14273 14395 14272 14272 14395 14273 14396 14396 14274 14396 14273 14273 14396 14274 14397 14397 14270 14392 14269 14269 14275 14397 14274 14274 14397 14275 14398 14398 14138 14265 14137 14137 14266 14137 14265 14265 14265 14138 14267 14267 14139 14267 14138 14138 14267 14139 14268 14268 14140 14268 14139 14139 14268 14140 14269 14269 14141 14269 14140 14140 14269 14141 14270 14270 14264 14266 14387 14387 14137 14266 14136 14136 14136 14266 14264 14264 14135:14136 \ - 14264 14264 14129:14130 14127 14127 14130 14129 14132 14132 14132 14135 14130 14130 13933 14135 14132 14132 13932 14135 13933 13933 14135 13932 14136 14136 14285 14407 14284 14284 14406 14284 14407 14407 14407 14285 14408 14408 14286 14408 14285 14285 14408 14286 14409 14409 14287 14409 14286 14286 14409 14287 14410 14410 14284 14406 14283 14283 14405 14283 14406 14406 14283 14405 14282 14282 14404 14282 14405 14405 13998:13999 \ - 13996 13996:13997 13996 13999 13999 13999 14164 13997 13997 14163 13997 14164 14164 14164 14290 14163 14163 14291 14163 14290 14290 14290 14477 14291 14291 14291 14477 14411 14411 14411 14477 14410 14410 14288 14410 14287 14287 14410 14288 14411 14411 14282 14404 14281 14281 14403 14281 14404 14404 14281 14403 14280 14280 14402 14280 14403 14403 14280 14402 14279 14279 14401 14279 14402 14402 14279 14401 14278 14278 14400 14278 14401 14401 14278 14400 14277 14277 14399 14277 14400 14400 14277 14399 14276 14276 14398 14276 14399 14399 14276 14398 14275 14275 14143 14271 14142 14142 14270 14142 14271 14271 14271 14143 14272 14272 14144 14272 14143 14143 14272 14144 14273 14273 14145 14273 14144 14144 14273 14145 14274 14274 14146 14274 14145 14145 14274 14146 14275 14275 14142 14270 14141 14141 14147 14275 14146 14146 14275 14147 14276 14276 13937 14137 13935 13935 14136 13935 14137 14137 14137 13937 14138 14138 13939 14138 13937 13937 14138 13939 14139 14139 13941 14139 13939 13939 14139 13941 14140 14140 13943 14140 13941 13941 14140 13943 14141 14141 13945 14141 13943 13943 14141 13945 14142 14142 13935 14136 13932 13932 14131:14132 \ - 14129 14129 14132 14131 14134 14134 14134 13933 14132 14132 13933 13930 13932 13932 13930 13933 13988 13988 13988 13933 14134 14134 13931:13932 \ - 13930 13930 13932 13931 13935 13935 14156 14284 14155 14155 14283 14155 14284 14284 14284 14156 14285 14285 14157 14285 14156 14156 14285 14157 14286 14286 14158 14286 14157 14157 14286 14158 14287 14287 14159 14287 14158 14158 14287 14159 14288 14288 14155 14283 14154 14154 14282 14154 14283 14283 14154 14282 14153 14153 14281 14153 14282 14282 13996:13997 \ - 13994 13994:13995 13994 13997 13997 13997 14163 13995 13995 14162 13995 14163 14163 14163 14291 14162 14162 14162 14291 14289 14289 14289 14291 14411 14411 14289 14411 14288 14288 14160 14288 14159 14159 14288 14160 14289 14289 14153 14281 14152 14152 14280 14152 14281 14281 14152 14280 14151 14151 14279 14151 14280 14280 14151 14279 14150 14150 14278 14150 14279 14279 14150 14278 14149 14149 14277 14149 14278 14278 14149 14277 14148 14148 14276 14148 14277 14277 14148 14276 14147 14147 13949 14143 13947 13947 14142 13947 14143 14143 14143 13949 14144 14144 13951 14144 13949 13949 14144 13951 14145 14145 13953 14145 13951 13951 14145 13953 14146 14146 13955 14146 13953 13953 14146 13955 14147 14147 13947 14142 13945 13945 13957 14147 13955 13955 14147 13957 14148 14148 13934:13935 \ - 13931 13931 13935 13934 13937 13937 13936:13937 13934 13934 13937 13936 13939 13939 13938:13939 \ - 13936 13936 13939 13938 13941 13941 13940:13941 13938 13938 13941 13940 13943 13943 13942:13943 \ - 13940 13940 13943 13942 13945 13945 13944:13945 13942 13942 13945 13944 13947 13947 14133:14134 \ - 14131 14131 14133 13988 14134 14134 13975 14156 13973 13973 14155 13973 14156 14156 14156 13975 14157 14157 13977 14157 13975 13975 14157 13977 14158 14158 13979 14158 13977 13977 14158 13979 14159 14159 13981 14159 13979 13979 14159 13981 14160 14160 13973 14155 13971 13971 14154 13971 14155 14155 13971 14154 13969 13969 14153 13969 14154 14154 13969 14153 13967 13967 14152 13967 14153 14153 13994:13995 \ - 13991 13991:13992 13991 13995 13995 13995 14162 13992 13992 14161 13992 14162 14162 14161:14162 \ - 14289 14289 14161 14289 14160 14160 13983 14160 13981 13981 14160 13983 14161 14161 13967 14152 13965 13965 14151 13965 14152 14152 13965 14151 13963 13963 14150 13963 14151 14151 13963 14150 13961 13961 14149 13961 14150 14150 13961 14149 13959 13959 14148 13959 14149 14149 13959 14148 13957 13957 13948:13949 \ - 13946 13946:13947 13946 13949 13949 13949 13948 13951 13951 13950:13951 \ - 13948 13948 13951 13950 13953 13953 13952:13953 13950 13950 13953 13952 13955 13955 13954:13955 \ - 13952 13952 13955 13954 13957 13957 13946:13947 13944 13944 13956:13957 \ - 13954 13954 13957 13956 13959 13959 13974:13975 13972 13972:13973 \ - 13972 13975 13975 13975 13974 13977 13977 13976:13977 \ - 13974 13974 13977 13976 13979 13979 13978:13979 13976 13976 13979 13978 13981 13981 13980:13981 \ - 13978 13978 13981 13980 13983 13983 13972:13973 13970 13970:13971 \ - 13970 13973 13973 13970:13971 13968 13968:13969 13968 13971 13971 13968:13969 \ - 13966 13966:13967 13966 13969 13969 13966:13967 13964 13964:13965 \ - 13964 13967 13967 13991:13992 13990 13990 13993 13990 13992 13992 13992 14161 13993 13993 13985 14161 13983 13983 13993 14161 13985 13985 13982:13983 \ - 13980 13980 13983 13982 13985 13985 13964:13965 13962 13962:13963 \ - 13962 13965 13965 13962:13963 13960 13960:13961 13960 13963 13963 13960:13961 \ - 13958 13958:13959 13958 13961 13961 13958:13959 13956 13956 13990 13993 13989 13989 13989 13993 13987 13987 13987 13993 13985 13985 13984:13985 \ - 13982 13982 13985 13984 13987 13987 13986 13989 13987 13987 13986:13987 \ - 13984 13984 13870 13912 13868 13868 13872 13911 13870 13870 13912 13870 13911 13911 13874 13910 13872 13872 13911 13872 13910 13910 13868 13913 13866 13866 13913 13868 13912 13912 13866 13914 13864 13864 13914 13866 13913 13913 13876 13909 13874 13874 13910 13874 13909 13909 13878 13908 13876 13876 13909 13876 13908 13908 13880 13907 13878 13878 13908 13878 13907 13907 13882 13906 13880 13880 13907 13880 13906 13906 13884 13905 13882 13882 13906 13882 13905 13905 13886 13904 13884 13884 13905 13884 13904 13904 13888 13903 13886 13886 13904 13886 13903 13903 13864 13915 13862 13862 13915 13864 13914 13914 13860 13917 13858 13858 13862 13916 13860 13860 13917 13860 13916 13916 13916 13862 13915 13915 13858 13918 13856 13856 13918 13858 13917 13917 13856 13919 13854 13854 13919 13856 13918 13918 13890 13902 13888 13888 13903 13888 13902 13902 13854 13920 13852 13852 13920 13854 13919 13919 13852 13921 13850 13850 13921 13852 13920 13920 13850 13922 13848 13848 13922 13850 13921 13921 13892 13901 13890 13890 13902 13890 13901 13901 13848 13923 13846 13846 13923 13848 13922 13922 13894 13899 13892 13892 13892 13899 13901 13901 13846 13924 13844 13844 13924 13846 13923 13923 13844 13925 13842 13842 13925 13844 13924 13924 13895 13899 13894 13894 13896 13899 13895 13895 13842 13929 13840 13840 13929 13842 13925 13925 13925:13926 \ - 13929 13929 13840 13928 13838 13838 13928 13840 13929 13929 13929 13926 13928 13928 13928 13926:13927 \ - 13927 13838 13927 13833 13833 13927 13838 13928 13928 13833 13927 13834 13834 13832:13833 \ - 13831 13831 13834 13831 13833 13833 " ) -VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) -VCmd.Accept( var7 ) -VCmd.SetIntValue( var1, r"Visible Selection", 1 ) -VCmd.Cancel( var7 ) -VCmd.Quit( var7 ) -#__________________ UserDefineRegionChild END __________________ -VCmd.Accept( var5 ) -VCmd.Quit( var5 ) -#__________________ BoundaryConditions END __________________ -VExpMngr.ExportFile( VdbFilePath, 0 ) -ret=VE.ModelDestroy( "M @0" ) -VE.SetCurrentPage( 1 ) -VE.SetActiveWindow( r"p1w1" ) +# -*- coding: utf-8 -*- +""" +Created on Thu Feb 2 14:48:16 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Feb 2 14:11:07 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +import os + +print(100 * '-') +print('Curing set temperature 23') + +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbCuringFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbFilePath = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) + +lst1_count,lst1 = VScn.List( " CAST_BC @0 " ) +VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) +#__________________ BoundaryConditions BEGIN __________________ +var5=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"BoundaryConditions" ) +VCmd.SetStringValue( var5, r"ActiveBcType", r"Temperature" ) +VCmd.SetGuStringValue( var5, r"OpeningMode", r"CreateSpecificType" ) +ret=VCmd.ExecuteCommand( var5, r"CreateNew" ) +VCmd.SetStringValue( var5, r"BcName", r"Temperature_1" ) +VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"ParamValue", r"F(t)" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateCurve" ) +VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) +VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var5, r"ActiveBcParam", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) +VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"temperatureValue" ) +VCmd.SetStringValue( var5, r"PropertyValueUnit", r"K" ) +VCmd.SetStringValue( var5, r"PropertyFuncUnit", r"sec" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) +lst1_count,lst1 = VScn.Point2List( " 0. 393.1499938964844 | \ +2400. 433.1499938964844 | \ +9600. 433.1499938964844 | \ +15000. 298.1499938964844 | \ +18000. 298.1499938964844 | \ + " ) +VCmd.SetPoint2ArrayValue( var5, r"PropertyTValue", lst1_count, lst1 ) +#__________________ UserDefineRegionChild BEGIN __________________ +var7=VCmd.ActivateChild( var5, var5, r"UserDefineRegionChild" ) +VCmd.SetStringValue( var7, r"Type", r"Node" ) +VCmd.SetIntValue( var1, r"Visible Selection", 1 ) +VCmd.SetIntValue( var7, r"ModifyMode", 0 ) +VCmd.SetStringValue( var7, r"Name", r"Temperature_1" ) +VCmd.SetStringValue( var7, r"Type", r"Element face" ) +VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) +lst1_count,lst1 = VScn.List( " S 24484 24492 24496 24502 24508 24514 24522 24528 24534 24540 24546 24552 24591:24592 \ + 24595 24633:24634 24639:24640 24652 24681:24682 24687 24702:24703 \ + 24724 24727 24732 24751 24756:24757 24786:24787 24792 24795 24904 24907 24910 24915:24916 \ + 24967 24972:24973 25003 25008:25009 25026 25074:25075 \ + 25080 25099 25104 25123 25128 25165 25170:25171 25176 25195 25200 25228 25233:25234 \ + 25257:25258 25306 25311 25314:25315 25320 25330 25398:25399 \ + 25402 25405 25410:25411 25416 25462 25465 25468 25471 25476 25515:25516 \ + 25521:25522 25572:25573 25578:25579 25582 25605:25606 \ + 25629:25630 25696 25701 25704:25705 25708 25713:25714 \ + 25746:25747 25752 25798 25803:25804 25809:25810 25833:25834 \ + 25891 25896:25897 25902:25903 25908 25974:25975 25978 25981 25986:25987 \ + 25992 26013:26014 26071 26074 26079:26080 26083 26088 26098 26128 26131 26134 26155 26160 26208:26209 \ + 26214:26215 26220 26239 26242 26265:26266 26289:26290 \ + 26356 26361:26362 26365 26370 26373:26374 26406:26407 \ + 26412 26451:26452 26455 26460 26506 26511:26512 26517:26518 \ + 26541:26542 26556 26595:26596 26599 26604 26623 26628 26712:26713 \ + 26716 26721:26722 26725 26730:26731 26736 26757:26758 \ + 26842 26845 26850:26851 26856:26857 26860 26865:26866 \ + 26914 26917 26920 26923 26928 26949 26952 27018:27019 \ + 27024:27025 27028 27031 27036 27057 27060 27090:27091 \ + 27094 27117:27118 27202 27207 27210:27211 27214 27219:27220 \ + 27225:27226 27267:27268 27271 27276 27313 27318:27319 \ + 27324 27388 27393:27394 27399:27400 27403 27406 27418 27459:27460 \ + 27463 27468 27487 27492 27576:27577 27580 27585:27586 \ + 27589 27594:27595 27600 27621:27622 27645:27646 27703 27708 27711:27712 \ + 27717:27718 27777:27778 27783:27784 27789 27792 27856 27859 27862 27867:27868 \ + 27871 27874 27897:27898 27966:27967 27972:27973 27978:27979 \ + 27984 28012 28017 28020 28030 28080:28081 28084 28087 28092 28113:28114 \ + 28135 28140 28204 28209:28210 28215:28216 28221:28222 \ + 28254:28255 28258 28299:28300 28303 28308 28345 28350 28353:28354 \ + 28429 28434:28435 28440:28441 28444 28447 28452 28464 28485:28486 \ + 28507 28512 28531 28536 28620:28621 28624 28629:28630 \ + 28633 28638:28639 28644 28665:28666 28689:28690 28713:28714 \ + 28771 28776:28777 28782 28785:28786 28872:28873 28876 28881:28882 \ + 28887:28888 28893:28894 28980:28981 28986:28987 28990 28995:28996 \ + 29001:29002 29016 29082:29083 29088:29089 29094:29095 \ + 29098 29119 29122 29161 29166:29167 29172 29238:29239 \ + 29242 29245 29250:29251 29256 29277:29278 29299 29304 29368 29373:29374 \ + 29379:29380 29385:29386 29418:29419 29422 29463:29464 \ + 29467 29470 29511:29512 29515 29520 29541:29542 29563 29568 29623 29628:29629 \ + 29632 29635 29638 29679:29680 29683 29688 29709:29710 \ + 29733:29734 29755 29760 29844:29845 29848 29853:29854 \ + 29857 29862:29863 29868 29889:29890 29913:29914 29937:29938 \ + 29961:29962 30019 30022 30025 30030:30031 30036 30138:30139 \ + 30142 30147:30148 30153:30154 30159:30160 30165:30166 \ + 30189:30190 30256 30261:30262 30267:30268 30273:30274 \ + 30286 30354:30355 30360:30361 30366:30367 30372 30391 30396 30406 30445 30448 30453:30454 \ + 30540:30541 30544 30547 30552:30553 30558:30559 30562 30585:30586 \ + 30607 30612 30676 30681:30682 30687:30688 30693:30694 \ + 30706 30756:30757 30760 30765 30768 30807:30808 30811 30816 30837:30838 \ + 30861:30862 30883 30888 30907 30912 30976 30981:30982 \ + 30985 30988 30993:30994 31033 31038:31039 31044 31065:31066 \ + 31087 31092 31111 31116 31200:31201 31204 31209:31210 \ + 31213 31218:31219 31224 31245:31246 31269:31270 31293:31294 \ + 31317:31318 31341:31342 31399 31402 31407:31408 31411 31414 31464:31465 \ + 31470:31471 31476 31540 31545:31546 31551:31552 31557:31558 \ + 31581:31582 31603 31608 31683:31684 31689:31690 31695:31696 \ + 31699 31704 31770:31771 31776:31777 31782:31783 31788 31807 31812 31822 31863:31864 \ + 31867 31872 31954 31957 31962:31963 31968:31969 31972 31977:31978 \ + 32001:32002 32025:32026 32047 32052 32116 32121:32122 \ + 32127:32128 32133:32134 32155 32160 32226:32227 32230 32235:32236 \ + 32241:32242 32283:32284 32287 32292 32313:32314 32337:32338 \ + 32359 32364 32383 32388 32452 32455 32460 32463:32464 \ + 32467 32472 32491 32496 32533 32538:32539 32544 32565:32566 \ + 32587 32590 32613:32614 32700:32701 32704 32709:32710 \ + 32713 32718:32719 32724 32745:32746 32769:32770 32793:32794 \ + 32817:32818 32841:32842 32865:32866 32923 32928 32931:32932 \ + 32937:32938 32979:32980 32983 32986 33007 33010 33094 33099:33100 \ + 33105:33106 33111:33112 33115 33120 33139 33142 33163 33168 33243:33244 \ + 33249:33250 33253 33258:33259 33264 33330:33331 33336:33337 \ + 33342:33343 33348 33367 33372 33391 33394 33435:33436 \ + 33441:33442 33526 33531 33534:33535 33538 33543:33544 \ + 33549:33550 33571 33574 33597:33598 33621:33622 33643 33648 33712 33715 33718 33721 33724 33729:33730 \ + 33753 33756 33768 33850 33853 33858:33859 33862 33867:33868 \ + 33873:33874 33897:33898 33921:33922 33945:33946 33967 33972 33991 33996 34015 34020 34095:34096 \ + 34099 34102 34105 34110:34111 34116 34135 34140 34177 34182:34183 \ + 34188 34207 34212 34231 34236 34255 34260 34344:34345 \ + 34348 34353:34354 34357 34362:34363 34368 34389:34390 \ + 34413:34414 34437:34438 34461:34462 34485:34486 34509:34510 \ + 34533:34534 34591 34594 34597 34600 34605:34606 34647:34648 \ + 34653:34654 34675 34680 34764:34765 34768 34773:34774 \ + 34779:34780 34785:34786 34807 34812 34833:34834 34855 34860 34935:34936 \ + 34939 34944:34945 34950:34951 34956 35022:35023 35028:35029 \ + 35034:35035 35040 35059 35062 35083 35086 35109 35112 35151:35152 \ + 35155 35160 35242 35247:35248 35253:35254 35259:35260 \ + 35265:35266 35287 35292 35311 35314 35337:35338 35361:35362 \ + 35383 35386 35454:35455 35460:35461 35466:35467 35470 35493 35496 35517:35518 \ + 35604:35605 35608 35613:35614 35619:35620 35625:35626 \ + 35649:35650 35673:35674 35697:35698 35721:35722 35743 35748 35767 35772 35791 35794 35842 35845 35848 35851 35854 35893 35898:35899 \ + 35904 35923 35928 35965 35970:35971 35976 35995 36000 36019 36024 36043 36046 36132:36133 \ + 36136 36141:36142 36145 36148 36153:36154 36177:36178 \ + 36201:36202 36225:36226 36249:36250 36273:36274 36297:36298 \ + 36321:36322 36345:36346 36405:36406 36411:36412 36417:36418 \ + 36468 36471 36474:36475 36478 36499 36504 36588:36589 \ + 36592 36595 36600:36601 36604 36609:36610 36633:36634 \ + 36655 36660 36681:36682 36703 36708 36781 36786:36787 \ + 36792:36793 36798:36799 36804 36870:36871 36876:36877 \ + 36882:36883 36888 36907 36912 36933 36936 36946 36967 36970 37011:37012 \ + 37015 37020 37104:37105 37108 37113:37114 37119:37120 \ + 37125:37126 37147 37152 37171 37176 37195 37198 37221:37222 \ + 37245:37246 37269:37270 37338:37339 37344:37345 37350:37351 \ + 37356 37377:37378 37392 37413:37414 37500:37501 37504 37509:37510 \ + 37515:37516 37521:37522 37543 37548 37567 37570 37593:37594 \ + 37617:37618 37641:37642 37665:37666 37687 37690 37713:37714 \ + 37773:37774 37779 37782:37783 37788 37825 37830:37831 \ + 37836 37855 37860 37897 37902:37903 37908 37927 37932 37951 37954 37977:37978 \ + 38064:38065 38068 38073:38074 38077 38080 38085:38086 \ + 38109:38110 38133:38134 38157:38158 38181:38182 38205:38206 \ + 38229:38230 38253:38254 38277:38278 38301:38302 38361:38362 \ + 38365 38370 38373:38374 38433:38434 38439:38440 38443 38446 38467 38472 38556:38557 \ + 38560 38565:38566 38571:38572 38577:38578 38601:38602 \ + 38625:38626 38647 38652 38671 38676 38695 38700 38773 38778:38779 \ + 38784:38785 38790:38791 38796 38862:38863 38868:38869 \ + 38874:38875 38880 38899 38904 38925:38926 38940 38959 38962 39003:39004 \ + 39007 39010 39096:39097 39100 39105:39106 39111:39112 \ + 39117:39118 39141:39142 39163 39168 39187 39192 39211 39216 39235 39240 39259 39262 39285:39286 \ + 39354:39355 39360:39361 39366:39367 39372 39391 39396 39417:39418 \ + 39441:39442 39528:39529 39532 39537:39538 39543:39544 \ + 39549:39550 39573:39574 39597:39598 39621:39622 39645:39646 \ + 39669:39670 39693:39694 39715 39720 39741:39742 39765:39766 \ + 39816:39817 39822:39823 39826 39847 39852 39889 39894:39895 \ + 39900 39919 39924 39961 39966:39967 39972 39991 39994 40017:40018 \ + 40041:40042 40128:40129 40132 40137:40138 40141 40146:40147 \ + 40152 40173:40174 40197:40198 40221:40222 40245:40246 \ + 40269:40270 40293:40294 40317:40318 40341:40342 40365:40366 \ + 40389:40390 40447 40450 40455:40456 40459 40462 40512:40513 \ + 40518 40521:40522 40543 40548 40567 40572 40654 40659:40660 \ + 40665:40666 40671:40672 40675 40680 40699 40702 40725:40726 \ + 40749:40750 40771 40776 40795 40800 40819 40824 40897 40902:40903 \ + 40908:40909 40914:40915 40920 40986:40987 40992:40993 \ + 40998:40999 41004 41023 41028 41047 41052 41073:41074 \ + 41097:41098 41139:41140 41143 41146 41232:41233 41236 41241:41242 \ + 41247:41248 41253:41254 41277:41278 41301:41302 41323 41328 41347 41352 41371 41376 41395 41398 41421:41422 \ + 41445:41446 41514:41515 41520:41521 41526:41527 41532 41551 41556 41577 41580 41601 41604 41625:41626 \ + 41712:41713 41716 41721:41722 41727:41728 41733:41734 \ + 41757:41758 41781:41782 41803 41808 41827 41830 41853:41854 \ + 41877:41878 41901:41902 41923 41926 41949:41950 41973:41974 \ + 42033:42034 42039:42040 42043 42046 42067 42072 42109 42114:42115 \ + 42120 42139 42144 42181 42186:42187 42192 42213:42214 \ + 42237:42238 42261:42262 42346 42351 42354:42355 42360:42361 \ + 42366:42367 42372 42391 42396 42415 42420 42439 42444 42463 42468 42487 42492 42511 42516 42535 42540 42559 42564 42583 42588 42607 42612 42631 42636 42691 42696 42699:42700 \ + 42705:42706 42774:42775 42780:42781 42784 42787 42790 42811 42816 42835 42840 42924:42925 \ + 42928 42933:42934 42937 42942:42943 42948 42969:42970 \ + 42993:42994 43017:43018 43041:43042 43063 43068 43087 43092 43111 43116 43189 43194:43195 \ + 43200:43201 43206:43207 43212 43276 43281 43284:43285 \ + 43290:43291 43296 43315 43320 43339 43344 43363 43368 43380 43401:43402 \ + 43443:43444 43447 43450 43536:43537 43540 43545:43546 \ + 43551:43552 43557:43558 43581:43582 43605:43606 43629:43630 \ + 43651 43656 43675 43680 43699 43702 43725:43726 43749:43750 \ + 43773:43774 43842:43843 43848:43849 43854:43855 43860 43879 43884 43905 43908 43920 43939 43942 43965:43966 \ + 44052:44053 44056 44061:44062 44067:44068 44073:44074 \ + 44097:44098 44121:44122 44145:44146 44169:44170 44191 44196 44215 44220 44239 44244 44263 44266 44289:44290 \ + 44313:44314 44337:44338 44406:44407 44412:44413 44416 44419 44424 44443 44448 44485 44490:44491 \ + 44496 44515 44520 44557 44562:44563 44568 44589:44590 \ + 44613:44614 44637:44638 44677 44682 44685:44686 44745:44746 \ + 44749 44752 44757:44758 44779 44782 44803 44808 44827 44832 44914 44917 44922 44925:44926 \ + 44931:44932 44937:44938 44959 44964 44985:44986 45007 45010 45031 45036 45055 45060 45081:45082 \ + 45105:45106 45127 45132 45207:45208 45213:45214 45219:45220 \ + 45225:45226 45274 45279 45282:45283 45288 45307 45312 45331 45336 45357 45360 45381:45382 \ + 45405:45406 45447:45448 45451 45456 45538 45543 45546:45547 \ + 45552:45553 45558:45559 45564 45583 45588 45607 45612 45631 45636 45655 45660 45679 45684 45703 45708 45727 45732 45751 45756 45775 45780 45801:45802 \ + 45870:45871 45876:45877 45882:45883 45888 45907 45912 45931 45936 45948 45969:45970 \ + 45993:45994 46080:46081 46084 46089:46090 46095:46096 \ + 46101:46102 46125:46126 46149:46150 46173:46174 46197:46198 \ + 46219 46224 46243 46248 46267 46272 46291 46294 46317:46318 \ + 46341:46342 46363 46368 46387 46392 46449:46450 46455:46456 \ + 46461 46464 46483 46488 46507 46512 46549 46554:46555 \ + 46560 46579 46584 46621 46626:46627 46632 46653:46654 \ + 46677:46678 46701:46702 46723 46728 46783 46788 46791:46792 \ + 46797:46798 46819 46824 46843 46848 46869:46870 47193:47194 \ + 47320 47325 47328 47347 47352 47371 47376 47397:47398 \ + 47421:47422 47443 47448 47467 47470 47509 47514:47515 \ + 47520 47539 47544 47608 47613 47616:47617 47622:47623 \ + 47628 47647 47652 47671 47676 47697 47700 47721:47722 \ + 47745:47746 47832:47833 47836 47841:47842 47847:47848 \ + 47853:47854 47877:47878 47901:47902 47925:47926 47949:47950 \ + 47973:47974 47995 48000 48019 48024 48043 48046 48069:48070 \ + 48093:48094 48117:48118 48186:48187 48192:48193 48198:48199 \ + 48202 48223 48226 48247 48252 48289 48294:48295 48300 48319 48324 48363:48364 \ + 48369:48370 48393:48394 48417:48418 48441:48442 48490 48495:48496 \ + 48499 48502 48523 48528 48549:48550 48658 48663 48666:48667 \ + 48672:48673 48678:48679 48684 48703 48706 48729:48730 \ + 48753:48754 48775 48780 48799 48802 48825:48826 48849:48850 \ + 48871 48876 48895 48900 48997 49002 49005:49006 49011:49012 \ + 49015 49020 49030 49053 49056 49075 49080 49099 49104 49114 49135 49138 49159 49164 49183 49188 49234 49239 49242:49243 \ + 49248 49267 49272 49291 49296 49315 49320 49330 49353:49354 \ + 49377:49378 49462 49467 49470:49471 49476:49477 49482:49483 \ + 49488 49507 49512 49531 49536 49555 49560 49579 49584 49603 49608 49627 49632 49651 49656 49675 49680 49699 49704 49723 49728 49747 49752 49771 49776 49842:49843 \ + 49848:49849 49852 49855 49858 49881:49882 49903 49906 49927 49932 49969 49974:49975 \ + 49980 50001:50002 50071 50076 50095 50100 50119 50124 50152 50157:50158 \ + 50179 50182 50205:50206 50251 50256 50320 50325 50328:50329 \ + 50334:50335 50340 50359 50364 50383 50388 50407 50410 50433:50434 \ + 50457:50458 50481:50482 50505:50506 50529:50530 50553:50554 \ + 50575 50580 50599 50604 50623 50628 50692 50697 50700:50701 \ + 50706:50707 50712 50722 50734 50757 50760 50779 50782 50794 50815 50818 50839 50844 50872 50877 50880 50899 50904 50925 50928 50949 50952 50971 50974 50997:50998 \ + 51019 51024 51088 51093 51096:51097 51102:51103 51106 51120 51141:51142 \ + 51163 51168 51187 51192 51231:51232 51237:51238 51301 51306:51307 \ + 51312 51322 51336 51355 51358 51412 51415 51418 51439 51444 51510 51513:51514 \ + 51519:51520 51525:51526 51549:51550 51573:51574 51597:51598 \ + 51619 51622 51643 51648 51667 51672 51693:51694 51715 51718 51739 51744 51763 51768 51789:51790 \ + 51813:51814 51835 51840 51906 51909:51910 51915:51916 \ + 51921:51922 51934 51946 51969 51972 51993 51996 52015 52020 52030 52053 52056 52075 52080 52101:52102 \ + 52116 52135 52138 52159 52164 52210 52215 52218:52219 \ + 52222 52236 52255 52260 52279 52284 52305:52306 52375 52380 52417 52422:52423 \ + 52428 52440 52471 52522 52527 52530 52533 52536 52557:52558 \ + 52644 52647:52648 52653:52654 52659:52660 52665:52666 \ + 52689:52690 52713:52714 52737:52738 52759 52762 52783 52788 52807 52812 52831 52836 52855 52860 52879 52884 52905:52906 \ + 52929:52930 52953:52954 52977:52978 53055 53058:53059 \ + 53062 53067:53068 53073:53074 53086 53107 53112 53131 53136 53146 53169 53172 53202:53203 \ + 53208 53220 53239 53244 53272 53277:53278 53299 53302 53323 53326 53349:53350 \ + 53422 53427:53428 53433 53455 53460 53499:53500 53505:53506 \ + 53538:53539 53542 53565 53568 53652 53655:53656 53661:53662 \ + 53667:53668 53673:53674 53697:53698 53721:53722 53745:53746 \ + 53769:53770 53791 53794 53815 53820 53839 53844 53865:53866 \ + 53887 53890 53911 53916 53935 53938 53970:53971 53976 53997:53998 \ + 54021:54022 54099 54102:54103 54108:54109 54112 54117:54118 \ + 54132 54142 54154 54175 54180 54217 54222:54223 54228 54238 54259 54262 54285:54286 \ + 54309:54310 54412 54417:54418 54423:54424 54429 54453:54454 \ + 54495:54496 54501:54502 54516 54528 54538 54606 54609:54610 \ + 54615:54616 54621:54622 54645:54646 54669:54670 54693:54694 \ + 54717:54718 54741:54742 54765:54766 54787 54790 54811 54816 54835 54840 54859 54864 54883 54888 54907 54912 54931 54936 54984:54985 \ + 54988 54991 54996 55017:55018 55041:55042 55110 55113:55114 \ + 55119:55120 55125:55126 55138 55152 55162 55174 55188 55209:55210 \ + 55320:55321 55324 55329:55330 55335:55336 55339 55365:55366 \ + 55407:55408 55413:55414 55482 55485:55486 55491:55492 \ + 55497:55498 55521:55522 55545:55546 55569:55570 55593:55594 \ + 55617:55618 55641:55642 55665:55666 55687 55690 55711 55716 55735 55740 55768 55771 55774 55795 55798 55810 55831 55834 55882 55887 55890:55891 \ + 55896 55917:55918 55941:55942 56010 56013:56014 56019:56020 \ + 56025:56026 56038 56050 56160:56161 56164 56167 56172 56175:56176 \ + 56181:56182 56203 56206 56227 56232 56271 56274:56275 \ + 56278 56346 56349:56350 56355:56356 56361:56362 56385:56386 \ + 56409:56410 56433:56434 56457:56458 56481:56482 56505:56506 \ + 56529:56530 56553:56554 56577:56578 56601:56602 56614 56664:56665 \ + 56670:56671 56676 56686 56707 56712 56740 56745 56748 56767 56772 56793:56794 \ + 56817:56818 56886 56889:56890 56895:56896 56901:56902 \ + 56914 57009 57012:57013 57018 57021 57024 57027 57030:57031 \ + 57036 57048 57067 57072 57111 57114:57115 57118 57186 57189:57190 \ + 57195:57196 57201:57202 57225:57226 57249:57250 57273:57274 \ + 57297:57298 57321:57322 57345:57346 57369:57370 57393:57394 \ + 57415 57418 57441:57442 57465:57466 57525:57526 57531:57532 \ + 57537:57538 57559 57564 57574 57597 57600 57619 57624 57645:57646 \ + 57669:57670 57738:57739 57744 57747:57748 57753:57754 \ + 57766 57805 57810:57811 57816 57880 57885 57888:57889 \ + 57892 57895 57900 57919 57922 57963 57966 57969:57970 \ + 58038 58041:58042 58047:58048 58053:58054 58077:58078 \ + 58101:58102 58125:58126 58149:58150 58173:58174 58197:58198 \ + 58221:58222 58245:58246 58269:58270 58293:58294 58317 58320 58339 58344 58399 58404:58405 \ + 58410:58411 58416 58435 58440 58450 58473 58476 58495 58500 58521:58522 \ + 58543 58548 58614 58617:58618 58623 58626 58629:58630 \ + 58642 58699 58704:58705 58708 58713:58714 58735 58740 58777 58782:58783 \ + 58788 58854 58857:58858 58863:58864 58869:58870 58893:58894 \ + 58917:58918 58941:58942 58965:58966 58989:58990 59013:59014 \ + 59037:59038 59061:59062 59085:59086 59107 59112 59124 59143 59148 59167 59172 59209 59214:59215 \ + 59220 59239 59244 59263 59268 59278 59301 59304 59323 59328 59349:59350 \ + 59371 59376 59433:59434 59439 59442 59445:59446 59458 59488 59493 59496 59515 59520 59539 59544 59581 59586:59587 \ + 59592 59658 59661:59662 59667:59668 59673:59674 59697:59698 \ + 59721:59722 59745:59746 59769:59770 59793:59794 59817:59818 \ + 59841:59842 59865:59866 59889 59892 59922:59923 59928 59938 59959 59964 59983 59988 60007 60012 60031 60036 60055 60060 60079 60084 60094 60117 60120 60139 60144 60163 60168 60187 60190 60247 60252:60253 \ + 60258 60261 60264 60274 60297 60300 60319 60324 60343 60348 60367 60372 60391 60396 60462 60465:60466 \ + 60471:60472 60477:60478 60501:60502 60525:60526 60549:60550 \ + 60573:60574 60597:60598 60621:60622 60645:60646 60669:60670 \ + 60693:60694 60715 60718 60757 60762:60763 60768 60787 60792 60811 60816 60835 60840 60859 60864 60883 60888 60907 60912 60922 60945 60948 60967 60972 60991 60996 61015 61020 61066 61071:61072 \ + 61077:61078 61090 61113:61114 61137 61140 61159 61162 61185:61186 \ + 61209 61212 61278 61281 61284 61287:61288 61293:61294 \ + 61317:61318 61341:61342 61365:61366 61389:61390 61413:61414 \ + 61437:61438 61459 61462 61485:61486 61509:61510 61524 61543 61548 61585 61590:61591 \ + 61596 61615 61620 61639 61644 61663 61668 61687 61692 61711 61716 61735 61740 61750 61773 61776 61795 61800 61819 61824 61843 61848 61867 61872 61891 61896 61906 61929:61930 \ + 61951 61954 61975 61978 61999 62002 62023 62026 62092 62097 62100 62103 62106 62109:62110 \ + 62133:62134 62157:62158 62181:62182 62205:62206 62229:62230 \ + 62253:62254 62284 62287 62290 62302 62334:62335 62338 62350 62371 62376 62395 62398 62421 62424 62443 62446 62467 62470 62491 62496 62515 62520 62539 62542 62563 62568 62578 62601 62604 62623 62628 62647 62652 62671 62674 62695 62698 62719 62722 62734 62757 62760 62779 62784 62803 62808 62827 62832 62851 62856 62911 62916:62917 \ + 62922 62925 62928 62949:62950 62973:62974 62997:62998 \ + 63021:63022 63045:63046 63060 63081:63082 63123:63124 \ + 63127 63132 63169 63172 63175 63178 63199 63204 63225:63226 \ + 63249 63252 63271 63274 63297 63300 63319 63324 63343 63346 63369:63370 \ + 63391 63396 63406 63429 63432 63451 63456 63475 63478 63499 63504 63523 63528 63547 63552 63562 63585 63588 63607 63612 63631 63636 63655 63660 63679 63684 63703 63706 63754 63757 63760 63765 63768 63789:63790 \ + 63813:63814 63837:63838 63859 63862 63883 63888 63907 63912 63949 63954:63955 \ + 63958 63997 64002:64003 64008 64027 64032 64051 64054 64075 64080 64099 64104 64125 64128 64147 64150 64173:64174 \ + 64197:64198 64219 64222 64234 64257 64260 64279 64282 64303 64308 64327 64332 64351 64356 64375 64380 64390 64413 64416 64435 64440 64459 64464 64483 64488 64507 64512 64531 64536 64600 64605:64606 \ + 64611:64612 64617:64618 64641:64642 64663 64668 64687 64692 64704 64725:64726 \ + 64749:64750 64789 64794:64795 64798 64819 64824 64843 64848 64867 64872 64891 64896 64915 64920 64939 64944 64965 64968 64989:64990 \ + 65013:65014 65037:65038 65061:65062 65074 65097:65098 \ + 65121:65122 65143 65148 65167 65172 65191 65196 65215 65220 65230 65253 65256 65275 65280 65299 65304 65323 65328 65347 65352 65371 65376 65413 65418:65419 \ + 65424 65461 65466:65467 65472 65500 65505:65506 65529 65532 65551 65554 65586:65587 \ + 65590 65602 65623 65628 65647 65650 65671 65676 65695 65700 65719 65724 65743 65748 65767 65772 65791 65796 65817 65820 65841:65842 \ + 65865:65866 65889:65890 65913:65914 65926 65949:65950 \ + 65973:65974 65995 66000 66019 66024 66043 66048 66067 66072 66082 66105 66108 66127 66132 66151 66156 66175 66180 66199 66204 66223 66228 66265 66270:66271 \ + 66276 66313 66318:66319 66324 66370 66375:66376 66379 66382 66394 66433 66438:66439 \ + 66444 66481 66486 66489:66490 66511 66516 66535 66540 66559 66564 66583 66588 66607 66612 66631 66636 66655 66660 66679 66684 66705 66708 66729:66730 \ + 66753:66754 66777:66778 66801:66802 66814 66837:66838 \ + 66861:66862 66883 66888 66907 66912 66931 66936 66955 66960 66970 66993 66996 67015 67020 67039 67044 67063 67068 67087 67092 67111 67116 67153 67158:67159 \ + 67164 67201 67204 67207 67210 67260:67261 67264 67267 67272 67338:67339 \ + 67344:67345 67350:67351 67356 67375 67380 67399 67404 67423 67428 67447 67452 67471 67474 67495 67500 67519 67524 67543 67548 67567 67572 67593:67594 \ + 67617:67618 67641:67642 67665:67666 67689:67690 67702 67725:67726 \ + 67747 67750 67771 67776 67795 67800 67819 67824 67843 67848 67858 67881 67884 67903 67908 67927 67932 67951 67956 67975 67980 67999 68004 68041 68044 68047 68050 68091:68092 \ + 68097:68098 68139:68140 68145:68146 68223:68224 68229:68230 \ + 68235:68236 68241:68242 68265:68266 68289:68290 68311 68316 68335 68338 68359 68362 68383 68388 68407 68410 68433:68434 \ + 68457:68458 68481:68482 68505:68506 68529:68530 68551 68554 68566 68589 68592 68611 68616 68635 68640 68659 68664 68683 68688 68707 68712 68722 68745 68748 68767 68772 68791 68796 68815 68820 68839 68844 68863 68866 68907:68908 \ + 68913:68914 68955:68956 68961:68962 69003:69004 69009:69010 \ + 69033:69034 69093:69094 69099:69100 69105:69106 69129:69130 \ + 69153:69154 69177 69180 69208 69211 69216 69235 69238 69261:69262 \ + 69285 69288 69309:69310 69333:69334 69355 69358 69379 69382 69403 69406 69427 69432 69442 69465 69468 69487 69492 69511 69514 69535 69540 69559 69564 69583 69588 69598 69621 69624 69643 69648 69667 69672 69691 69696 69715 69720 69741:69742 \ + 69783:69784 69789:69790 69829 69832 69837:69838 69879:69880 \ + 69885:69886 69909:69910 69969 69972:69973 69976 69981:69982 \ + 69996 70017:70018 70041 70044 70081 70086 70089:70090 \ + 70111 70114 70137:70138 70161:70162 70185:70186 70207 70210 70231 70236 70255 70260 70279 70284 70303 70308 70318 70341 70344 70363 70368 70387 70390 70411 70416 70435 70440 70459 70464 70474 70497 70500 70519 70524 70543 70548 70567 70572 70591 70596 70617:70618 \ + 70657 70662:70663 70668 70707 70710 70713:70714 70753 70756 70759 70762 70783 70786 70825 70830 70833:70834 \ + 70846 70867 70872 70882 70941:70942 70947:70948 70953:70954 \ + 70968 70989:70990 71011 71014 71035 71038 71059 71064 71083 71088 71107 71112 71131 71136 71155 71160 71170 71193 71196 71215 71220 71239 71242 71263 71268 71287 71292 71311 71314 71326 71349 71352 71371 71376 71395 71400 71419 71424 71443 71448 71467 71472 71511 71514 71517:71518 \ + 71557 71560 71565:71566 71607:71608 71613:71614 71637:71638 \ + 71679:71680 71685:71686 71709:71710 71787:71788 71793 71796:71797 \ + 71800 71805:71806 71827 71832 71842 71863 71868 71887 71892 71911 71916 71935 71940 71959 71964 71983 71988 71998 72021 72024 72043 72048 72067 72070 72091 72096 72115 72120 72139 72144 72154 72177 72180 72199 72204 72223 72228 72247 72252 72271 72276 72306:72307 \ + 72310 72351:72352 72357:72358 72397 72400 72405:72406 \ + 72429:72430 72453:72454 72477:72478 72501:72502 72525:72526 \ + 72540 72624:72625 72630:72631 72634 72639:72640 72645:72646 \ + 72667 72672 72691 72694 72715 72720 72739 72742 72765 72768 72787 72792 72811 72816 72826 72849 72852 72871 72876 72888 72907 72912 72931 72936 72966:72967 \ + 72972 72982 73005 73008 73027 73032 73051 73056 73075 73080 73099 73104 73143:73144 \ + 73147 73152 73173:73174 73197:73198 73221:73222 73245:73246 \ + 73269:73270 73293:73294 73317:73318 73341:73342 73356 73377:73378 \ + 73446:73447 73450 73455:73456 73461:73462 73485:73486 \ + 73500 73521 73524 73554 73557:73558 73579 73582 73605:73606 \ + 73620 73639 73642 73654 73677 73680 73699 73702 73723 73728 73747 73752 73791:73792 \ + 73795 73798 73810 73833 73836 73855 73860 73879 73884 73903 73908 73927 73932 73971:73972 \ + 73975 73980 74001:74002 74025:74026 74049:74050 74073:74074 \ + 74097:74098 74121:74122 74145:74146 74160 74172 74256:74257 \ + 74260 74265:74266 74271:74272 74277:74278 74301:74302 \ + 74316 74362 74367:74368 74373:74374 74397:74398 74419 74424 74445:74446 \ + 74458 74481:74482 74503 74506 74527 74532 74560 74563 74566 74607:74608 \ + 74611 74616 74626 74649 74652 74671 74676 74695 74700 74719 74724 74743 74746 74787:74788 \ + 74791 74796 74817:74818 74841:74842 74865:74866 74889:74890 \ + 74913:74914 74937:74938 74952 75036:75037 75040 75045:75046 \ + 75051:75052 75057:75058 75072 75093:75094 75162:75163 \ + 75166 75171:75172 75177:75178 75199 75202 75223 75226 75249 75252 75262 75285 75288 75307 75310 75322 75372:75373 \ + 75376 75379 75384 75423:75424 75427 75432 75442 75465 75468 75487 75492 75511 75516 75535 75540 75559 75562 75585:75586 \ + 75609:75610 75633:75634 75657:75658 75681:75682 75705:75706 \ + 75729:75730 75744 75828:75829 75832 75837:75838 75843:75844 \ + 75849:75850 75864 75885:75886 75954:75955 75958 75963:75964 \ + 75969:75970 75993:75994 76008 76029 76032 76042 76054 76077 76080 76110 76113:76114 \ + 76182:76183 76186 76191:76192 76195 76198 76221:76222 \ + 76245:76246 76258 76281 76284 76303 76308 76327 76332 76353:76354 \ + 76377:76378 76401:76402 76425:76426 76449:76450 76473:76474 \ + 76497:76498 76521:76522 76536 76620:76621 76624 76629:76630 \ + 76635:76636 76641:76642 76656 76677:76678 76746:76747 \ + 76750 76755:76756 76761:76762 76785:76786 76809:76810 \ + 76824 76834 76857:76858 76906 76909 76912 76917:76918 \ + 77004:77005 77008 77013:77014 77019:77020 77023 77026 77049:77050 \ + 77073:77074 77086 77109 77112 77131 77136 77157 77160 77172 77193:77194 \ + 77217:77218 77241:77242 77265:77266 77289:77290 77313:77314 \ + 77328 77412:77413 77416 77421:77422 77427:77428 77433:77434 \ + 77448 77469:77470 77545 77550:77551 77556:77557 77562:77563 \ + 77568 77587 77592 77611 77616 77626 77640 77724:77725 \ + 77728 77733:77734 77739:77740 77743 77748 77769:77770 \ + 77793:77794 77817:77818 77830 77853 77856 77875 77880 77892 77911 77916 77937:77938 \ + 77961:77962 77985:77986 78009:78010 78024 78106 78111 78114:78115 \ + 78120:78121 78126:78127 78132 78142 78163 78168 78250 78255 78258:78259 \ + 78264:78265 78270:78271 78276 78295 78300 78319 78324 78343 78348 78367 78372 78382 78405 78408 78427 78432 78451 78456 78475 78480 78499 78504 78523 78528 78538 78550 78571 78576 78595 78600 78612 78622 46956 46959:46960 \ + 46963 46966 46971:46972 46977:46978 46999 47004 47023 47028 47047 47052 47071 47076 47095 47100 47119 47124 47145:47146 \ + 47169:47170 47271 47274:47275 47278 47283:47284 47289:47290 \ + 48573:48574 48921:48922 50043:50044 50049:50050 50229:50230 \ + 51261:51262 51379 51382 52347:52348 52353:52354 52452 52476 53371 53374 53436 54331 54336 54348 54432 55233:55234 \ + 55344 56071 56076 | \ + N 16120:16121 16005 16005 16120 16005:16006 16006 16006 16111 16120 16120 16111 16105 16120 16120 16120 16105 16121 16121 16005 16121 16004 16004 16004 16121 16119 16119 16119 16121 16106 16106 16106 16121 16105 16105 16104 16099 16105 16105 16105 16099 16106 16106 16105 16111 16104 16104 15998 16005 15997 15997 16004 15997 16005 16005 16005 15998 16006 16006 15999 16006 15998 15998:15999 \ + 16115 16006 16006 16115 16110 16006 16006 16111 16006 16110 16110 16110 16104 16111 16111 15997 16004 15996 15996 16003 15996 16004 16004 16003:16004 \ + 16119 16119 16003 16119 16064 16064 16106 16064 16119 16119 16080 16106 16099 16099 16064 16106 16063 16063 16080 16063 16106 16106 16099 16104 16098 16098 16103 16098 16104 16104 16104 16110 16103 16103 16092 16099 16091 16091 16098 16091 16099 16099 16093 16099 16092 16092 16080 16099 16093 16093 15988 15997 15987 15987 15996 15987 15997 15997 15997 15988 15998 15998 15989 15998 15988 15988 15998 15989 15999 15999 15990 15999 15989 15989 15999 15990 16000 16000 16000 16115 15999 15999 16110 16115 16109 16109 16114 16109 16115 16115 16114:16115 \ + 16000 16000 16109 16103 16110 16110 15987 15996 15986 15986 15995 15986 15996 15996 15996 16003 15995 15995 16002 15995 16003 16003 16002:16003 \ + 16064 16064 16002 16064 16050 16050 16063 16050 16064 16064 16062 16080 16061 16061 16079 16061 16080 16080 16063 16080 16062 16062 16079:16080 \ + 16093 16093 16050 16063 16049 16049 16062 16049 16063 16063 16091 16098 16090 16090 16097 16090 16098 16098 16098 16103 16097 16097 16102 16097 16103 16103 16103 16109 16102 16102 16085 16091 16084 16084 16090 16084 16091 16091 16091 16085 16092 16092 16086 16092 16085 16085 16092 16086 16093 16093 16079 16093 16086 16086 15977 15987 15976 15976 15986 15976 15987 15987 15987 15977 15988 15988 15978 15988 15977 15977 15988 15978 15989 15989 15979 15989 15978 15978 15989 15979 15990 15990 15980 15990 15979 15979 15990 15980 15991 15991 15991 16000 15990 15990:15991 \ + 16118 16000 16000 16114 16000 16118 16118 16107 16102 16109 16109 16109 16114 16107 16107 16112 16107 16114 16114 16114 16118 16112 16112 15976 15986 15975 15975 15984 15975 15986 15986 15986 15995 15984 15984 15993 15984 15995 15995 15995 16002 15993 15993 16001 15993 16002 16002 16001:16002 \ + 16050 16050 16001 16050 16025 16025 16049 16025 16050 16050 16048 16061 16047 16047 16060 16047 16061 16061 16061 16048 16062 16062 16061 16079 16060 16060 16049 16062 16048 16048 16078 16060 16079 16079 16078:16079 \ + 16086 16086 16024 16049 16023 16023 16048 16023 16049 16049 16025 16049 16024 16024 16084 16090 16083 16083 16089 16083 16090 16090 16090 16097 16089 16089 16096 16089 16097 16097 16097 16102 16096 16096 16101 16096 16102 16102 16102 16107 16101 16101 16076 16084 16075 16075 16083 16075 16084 16084 16084 16076 16085 16085 16077 16085 16076 16076 16085 16077 16086 16086 16078 16086 16077 16077 15902 15977 15901 15901 15976 15901 15977 15977 15977 15902 15978 15978 15903 15978 15902 15902 15978 15903 15979 15979 15904 15979 15903 15903 15979 15904 15980 15980 15901 15976 15900 15900 15975 15900 15976 15976 15905 15980 15904 15904 15980 15905 15981 15981 15981 15991 15980 15980 15991 15981 15992 15992 16118 15991 16116 16116 15992 16116 15991 15991 16116 16112 16118 16118 16101 16107 16100 16100 16108 16100 16107 16107 16107 16112 16108 16108 16113 16108 16112 16112 16112 16116 16113 16113 15900 15975 15899 15899 15974 15899 15975 15975 15975 15984 15974 15974 15985 15974 15984 15984 15984 15993 15985 15985 15994 15985 15993 15993 15993 16001 15994 15994 15969 15994 16001 16001 15969 16001 16025 16025 15969 16025 15968 15968 16024 15968 16025 16025 16022 16047 16021 16021 16046 16021 16047 16047 16047 16022 16048 16048 16047 16060 16046 16046 16023 16048 16022 16022 16059 16046 16060 16060 16060 16078 16059 16059 16071 16078 16070 16070 16077 16070 16078 16078 16059 16078 16071 16071 15967 16023 15966 15966 16022 15966 16023 16023 16023 15967 16024 16024 15968 16024 15967 15967 16075 16083 16074 16074 16082 16074 16083 16083 16083 16089 16082 16082 16087 16082 16089 16089 16089 16096 16087 16087 16094 16087 16096 16096 16096 16101 16094 16094 16100 16094 16101 16101 16069 16076 16068 16068 16075 16068 16076 16076 16076 16069 16077 16077 16070 16077 16069 16069 16068 16075 16067 16067 16074 16067 16075 16075 15887 15901 15886 15886 15900 15886 15901 15901 15901 15887 15902 15902 15888 15902 15887 15887 15902 15888 15903 15903 15889 15903 15888 15888 15903 15889 15904 15904 15890 15904 15889 15889 15904 15890 15905 15905 15886 15900 15885 15885 15899 15885 15900 15900 15891 15905 15890 15890 15905 15891 15906 15906 15906 15981 15905 15905 15981 15906 15982 15982 15982 15992 15981 15981 16116 15992 16117 16117 15983 16117 15992 15992 15983 15992 15982 15982 16117 16113 16116 16116 16094 16100 16095 16095 16095 16100 16029 16029 16029 16100 16028 16028 16100 16108 16028 16028 16108 16113 16028 16028 16028 16113 16026 16026 16113 16117 16026 16026 15885 15899 15884 15884 15898 15884 15899 15899 15899 15974 15898 15898 15973 15898 15974 15974 15974 15985 15973 15973 15973 15985 15971 15971 15985 15994 15971 15971 15971 15994 15970 15970 15970 15994 15969 15969 15945 15969 15944 15944 15968 15944 15969 15969 15969 15945 15970 15970 15944 15968 15943 15943 15967 15943 15968 15968 15965 16021 15964 15964 16020 15964 16021 16021 16021 15965 16022 16022 16021 16046 16020 16020 15966 16022 15965 15965 16045 16020 16046 16046 16046 16059 16045 16045 16058 16045 16059 16059 16058:16059 \ + 16071 16071 16057 16070 16056 16056 16069 16056 16070 16070 16070 16057 16071 16071 16058 16071 16057 16057 15942 15966 15941 15941 15965 15941 15966 15966 15966 15942 15967 15967 15943 15967 15942 15942 16067 16074 16066 16066 16072 16066 16074 16074 16074 16082 16072 16072 16081 16072 16082 16082 16082 16087 16081 16081 16088 16081 16087 16087 16087 16094 16088 16088 16095 16088 16094 16094 16055 16068 16054 16054 16067 16054 16068 16068 16068 16055 16069 16069 16056 16069 16055 16055 16054 16067 16053 16053 16066 16053 16067 16067 15843 15887 15842 15842 15886 15842 15887 15887 15887 15843 15888 15888 15844 15888 15843 15843 15888 15844 15889 15889 15845 15889 15844 15844 15889 15845 15890 15890 15846 15890 15845 15845 15890 15846 15891 15891 15842 15886 15841 15841 15885 15841 15886 15886 15841 15885 15840 15840 15884 15840 15885 15885 15847 15891 15846 15846 15891 15847 15892 15892 15892 15906 15891 15891 15906 15892 15907 15907 15907 15982 15906 15906 15982 15907 15983 15983 16026 16117 16027 16027 16117 15983 16027 16027 15908 15983 15907 15907:15908 \ + 15852 15983 15983 15853 15983 15852 15852:15853 16027 15983 15983 16088 16095 16030 16030 16030 16095 16029 16029 15857 16029 15856 15856 16028 15856 16029 16029 16029 15857 16030 16030 15856 16028 15855 15855 16026 15855 16028 16028 15855 16026 15854 15854 16027 15854 16026 16026 15840 15884 15839 15839 15883 15839 15884 15884 15884 15898 15883 15883 15897 15883 15898 15898 15898 15973 15897 15897 15972 15897 15973 15973 15972:15973 \ + 15971 15971 15947 15971 15946 15946 15970 15946 15971 15971 15971 15947 15972 15972 15946 15970 15945 15945 15932 15944 15931 15931 15943 15931 15944 15944 15944 15932 15945 15945 15933 15945 15932 15932 15945 15933 15946 15946 15931 15943 15930 15930 15942 15930 15943 15943 15941 15965 15940 15940 15964 15940 15965 15965 15940 15964 15939 15939 15963 15939 15964 15964 15964 16020 15963 15963 16018 15963 16020 16020 16020 16045 16018 16018 16044 16018 16045 16045 16045 16058 16044 16044 16043 16058 16042 16042 16057 16042 16058 16058 16044 16058 16043 16043 16041 16056 16040 16040 16055 16040 16056 16056 16056 16041 16057 16057 16042 16057 16041 16041 15929 15941 15928 15928 15940 15928 15941 15941 15941 15929 15942 15942 15930 15942 15929 15929 16053 16066 16051 16051 16065 16051 16066 16066 16066 16072 16065 16065 16073 16065 16072 16072 16072 16081 16073 16073 16073 16081 16032 16032 16032 16081 16031 16031 16081 16088 16031 16031 16031 16088 16030 16030 16040 16055 16039 16039 16054 16039 16055 16055 16039 16054 16038 16038 16053 16038 16054 16054 16038 16053 16037 16037 16051 16037 16053 16053 15741 15843 15740 15740 15842 15740 15843 15843 15843 15741 15844 15844 15742 15844 15741 15741 15844 15742 15845 15845 15743 15845 15742 15742 15845 15743 15846 15846 15744 15846 15743 15743 15846 15744 15847 15847 15740 15842 15739 15739 15841 15739 15842 15842 15739 15841 15738 15738 15840 15738 15841 15841 15738 15840 15737 15737 15839 15737 15840 15840 15745 15847 15744 15744 15847 15745 15848 15848 15848 15892 15847 15847 15892 15848 15893 15893 15893 15907 15892 15892 15907 15893 15908 15908 15854 16027 15853 15853 15894 15908 15893 15893:15894 \ + 15851 15908 15908 15852 15908 15851 15851 15788 15852 15787 15787 15851 15787 15852 15852 15852 15788 15853 15853 15789 15853 15788 15788 15853 15789 15854 15854 15858 16030 15857 15857 16030 15858 16031 16031 15792 15856 15791 15791 15855 15791 15856 15856 15856 15792 15857 15857 15793 15857 15792 15792 15857 15793 15858 15858 15791 15855 15790 15790 15854 15790 15855 15855 15790 15854 15789 15789 15737 15839 15736 15736 15838 15736 15839 15839 15839 15883 15838 15838 15882 15838 15883 15883 15883 15897 15882 15882 15895 15882 15897 15897 15897 15972 15895 15895 15948 15972 15947 15947 15895 15972 15948 15948 15934 15946 15933 15933 15946 15934 15947 15947 15935 15947 15934 15934 15947 15935 15948 15948 15875 15931 15874 15874 15930 15874 15931 15931 15931 15875 15932 15932 15876 15932 15875 15875 15932 15876 15933 15933 15877 15933 15876 15876 15933 15877 15934 15934 15874 15930 15873 15873 15929 15873 15930 15930 15928 15940 15927 15927 15939 15927 15940 15940 15927 15939 15926 15926 15938 15926 15939 15939 15939 15963 15938 15938 15962 15938 15963 15963 15963 16018 15962 15962 16019 15962 16018 16018 16018 16044 16019 16019 16017 16044 16016 16016 16043 16016 16044 16044 16019 16044 16017 16017 16015 16042 16014 16014 16041 16014 16042 16042 16042 16015 16043 16043 16016 16043 16015 16015 16013 16040 16012 16012 16039 16012 16040 16040 16040 16013 16041 16041 16014 16041 16013 16013 15873 15929 15872 15872 15928 15872 15929 15929 15872 15928 15871 15871 15927 15871 15928 15928 16037 16051 16036 16036 16052 16036 16051 16051 16051 16065 16052 16052 16033 16052 16065 16065 16065 16073 16033 16033 16033 16073 16032 16032 15860 16032 15859 15859 16031 15859 16032 16032 16032 15860 16033 16033 15859 16031 15858 15858 16012 16039 16011 16011 16038 16011 16039 16039 16011 16038 16010 16010 16037 16010 16038 16038 16010 16037 16009 16009 16036 16009 16037 16037 15705 15741 15704 15704 15740 15704 15741 15741 15741 15705 15742 15742 15706 15742 15705 15705 15742 15706 15743 15743 15707 15743 15706 15706 15743 15707 15744 15744 15708 15744 15707 15707 15744 15708 15745 15745 15704 15740 15703 15703 15739 15703 15740 15740 15703 15739 15702 15702 15738 15702 15739 15739 15702 15738 15701 15701 15737 15701 15738 15738 15701 15737 15700 15700 15736 15700 15737 15737 15709 15745 15708 15708 15745 15709 15746 15746 15746 15848 15745 15745 15848 15746 15849 15849 15849 15893 15848 15848 15894 15893 15849 15849 15894 15849:15850 \ + 15850 15850:15851 15894 15894 15787 15851 15785 15785 15850 15785 15851 15851 15770 15787 15768 15768 15785 15768 15787 15787 15787 15770 15788 15788 15771 15788 15770 15770 15788 15771 15789 15789 15772 15789 15771 15771 15789 15772 15790 15790 15794 15858 15793 15793 15858 15794 15859 15859 15774 15791 15773 15773 15790 15773 15791 15791 15791 15774 15792 15792 15775 15792 15774 15774 15792 15775 15793 15793 15776 15793 15775 15775 15793 15776 15794 15794 15773 15790 15772 15772 15700 15736 15699 15699 15735 15699 15736 15736 15736 15838 15735 15735 15837 15735 15838 15838 15838 15882 15837 15837 15881 15837 15882 15882 15882 15895 15881 15881 15896 15881 15895 15895:15896 \ + 15895 15948 15948 15896 15948 15935 15935 15878 15934 15877 15877 15934 15878 15935 15935 15879 15935 15878 15878:15879 \ + 15896 15935 15935 15827 15874 15826 15826 15873 15826 15874 15874 15874 15827 15875 15875 15828 15875 15827 15827 15875 15828 15876 15876 15829 15876 15828 15828 15876 15829 15877 15877 15830 15877 15829 15829 15877 15830 15878 15878 15826 15873 15825 15825 15872 15825 15873 15873 15871 15927 15870 15870 15926 15870 15927 15927 15870 15926 15869 15869 15925 15869 15926 15926 15926 15938 15925 15925 15937 15925 15938 15938 15938 15962 15937 15937 15961 15937 15962 15962 15962 16019 15961 15961 15961 16019 16017 16017 15958 16016 15957 15957 16015 15957 16016 16016 16016 15958 16017 16017 15959 16017 15958 15958:15959 \ + 15961 16017 16017 15956 16014 15955 15955 16013 15955 16014 16014 16014 15956 16015 16015 15957 16015 15956 15956 15955 16013 15954 15954 16012 15954 16013 16013 15954 16012 15953 15953 16011 15953 16012 16012 15825 15872 15824 15824 15871 15824 15872 15872 15824 15871 15823 15823 15870 15823 15871 15871 16009 16036 16007 16007 16035 16007 16036 16036 16036 16052 16035 16035 16035 16052 16034 16034 16034 16052 16033 16033 15861 16033 15860 15860 16033 15861 16034 16034 15795 15859 15794 15794 15859 15795 15860 15860 15796 15860 15795 15795 15860 15796 15861 15861 15953 16011 15952 15952 16010 15952 16011 16011 15952 16010 15951 15951 16009 15951 16010 16010 15951 16009 15950 15950 16007 15950 16009 16009 15542 15705 15541 15541 15704 15541 15705 15705 15705 15542 15706 15706 15543 15706 15542 15542 15706 15543 15707 15707 15544 15707 15543 15543 15707 15544 15708 15708 15545 15708 15544 15544 15708 15545 15709 15709 15541 15704 15540 15540 15703 15540 15704 15704 15540 15703 15539 15539 15702 15539 15703 15703 15539 15702 15538 15538 15701 15538 15702 15702 15538 15701 15537 15537 15700 15537 15701 15701 15537 15700 15536 15536 15699 15536 15700 15700 15546 15709 15545 15545 15709 15546 15710 15710 15710 15746 15709 15709 15746 15710 15747 15747 15747 15849 15746 15746 15849 15747 15850 15850 15748 15850 15747 15747:15748 \ + 15786 15850 15850 15786 15785 15850 15850 15768 15785 15769 15769 15786 15769 15785 15785 15716 15768 15715 15715 15769 15715 15768 15768 15768 15716 15770 15770 15717 15770 15716 15716 15770 15717 15771 15771 15718 15771 15717 15717 15771 15718 15772 15772 15719 15772 15718 15718 15772 15719 15773 15773 15777 15794 15776 15776 15794 15777 15795 15795 15720 15773 15719 15719 15773 15720 15774 15774 15721 15774 15720 15720 15774 15721 15775 15775 15722 15775 15721 15721 15775 15722 15776 15776 15723 15776 15722 15722 15776 15723 15777 15777 15536 15699 15535 15535 15698 15535 15699 15699 15699 15735 15698 15698 15734 15698 15735 15735 15735 15837 15734 15734 15835 15734 15837 15837 15837 15881 15835 15835 15880 15835 15881 15881 15881 15896 15880 15880 15880 15896 15879 15879 15831 15878 15830 15830 15878 15831 15879 15879 15832 15879 15831 15831 15879 15832 15880 15880 15687 15827 15686 15686 15826 15686 15827 15827 15827 15687 15828 15828 15688 15828 15687 15687 15828 15688 15829 15829 15689 15829 15688 15688 15829 15689 15830 15830 15690 15830 15689 15689 15830 15690 15831 15831 15686 15826 15685 15685 15825 15685 15826 15826 15685 15825 15684 15684 15824 15684 15825 15825 15823 15870 15822 15822 15869 15822 15870 15870 15822 15869 15821 15821 15868 15821 15869 15869 15869 15925 15868 15868 15923 15868 15925 15925 15925 15937 15923 15923 15936 15923 15937 15937 15937 15961 15936 15936 15936 15961 15960 15960 15960:15961 \ + 15959 15959 15918 15957 15917 15917 15956 15917 15957 15957 15957 15918 15958 15958 15919 15958 15918 15918 15958 15919 15959 15959 15920 15959 15919 15919 15959 15920 15960 15960 15916 15955 15915 15915 15954 15915 15955 15955 15955 15916 15956 15956 15917 15956 15916 15916 15915 15954 15914 15914 15953 15914 15954 15954 15914 15953 15913 15913 15952 15913 15953 15953 15684 15824 15683 15683 15823 15683 15824 15824 15683 15823 15682 15682 15822 15682 15823 15823 15950 16007 15949 15949 16008 15949 16007 16007:16008 \ + 16007 16035 16035 15863 16035 15862 15862 16034 15862 16035 16035 15863 16008 16035 16035 15862 16034 15861 15861 15797 15861 15796 15796 15861 15797 15862 15862 15778 15795 15777 15777 15795 15778 15796 15796 15779 15796 15778 15778 15796 15779 15797 15797 15913 15952 15912 15912 15951 15912 15952 15952 15912 15951 15911 15911 15950 15911 15951 15951 15911 15950 15909 15909 15949 15909 15950 15950 15521 15542 15520 15520 15541 15520 15542 15542 15542 15521 15543 15543 15522 15543 15521 15521 15543 15522 15544 15544 15523 15544 15522 15522 15544 15523 15545 15545 15524 15545 15523 15523 15545 15524 15546 15546 15520 15541 15519 15519 15540 15519 15541 15541 15519 15540 15518 15518 15539 15518 15540 15540 15518 15539 15517 15517 15538 15517 15539 15539 15517 15538 15516 15516 15537 15516 15538 15538 15516 15537 15515 15515 15536 15515 15537 15537 15515 15536 15514 15514 15535 15514 15536 15536 15525 15546 15524 15524 15546 15525 15547 15547 15547 15710 15546 15546 15710 15547 15711 15711 15711 15747 15710 15710 15747 15711 15748 15748 15712 15748 15711 15711 15748 15712 15749 15749 15749 15786 15748 15748 15769 15786 15749 15749 15715 15769 15714 15714 15714 15769 15749 15749 15598 15715 15597 15597 15714 15597 15715 15715 15715 15598 15716 15716 15599 15716 15598 15598 15716 15599 15717 15717 15600 15717 15599 15599 15717 15600 15718 15718 15601 15718 15600 15600 15718 15601 15719 15719 15602 15719 15601 15601 15719 15602 15720 15720 15724 15777 15723 15723 15777 15724 15778 15778 15603 15720 15602 15602 15720 15603 15721 15721 15604 15721 15603 15603 15721 15604 15722 15722 15605 15722 15604 15604 15722 15605 15723 15723 15606 15723 15605 15605 15723 15606 15724 15724 15514 15535 15513 15513 15534 15513 15535 15535 15535 15698 15534 15534 15697 15534 15698 15698 15698 15734 15697 15697 15732 15697 15734 15734 15734 15835 15732 15732 15836 15732 15835 15835 15835 15880 15836 15836 15833 15880 15832 15832 15836 15880 15833 15833 15691 15831 15690 15690 15831 15691 15832 15832 15692 15832 15691 15691 15832 15692 15833 15833 15648 15687 15647 15647 15686 15647 15687 15687 15687 15648 15688 15688 15649 15688 15648 15648 15688 15649 15689 15689 15650 15689 15649 15649 15689 15650 15690 15690 15651 15690 15650 15650 15690 15651 15691 15691 15647 15686 15646 15646 15685 15646 15686 15686 15646 15685 15645 15645 15684 15645 15685 15685 15645 15684 15644 15644 15683 15644 15684 15684 15682 15822 15681 15681 15821 15681 15822 15822 15681 15821 15680 15680 15820 15680 15821 15821 15821 15868 15820 15820 15866 15820 15868 15868 15868 15923 15866 15866 15924 15866 15923 15923 15923 15936 15924 15924 15921 15924 15936 15936 15921 15936 15960 15960 15921 15960 15920 15920 15811 15917 15810 15810 15916 15810 15917 15917 15917 15811 15918 15918 15812 15918 15811 15811 15918 15812 15919 15919 15813 15919 15812 15812 15919 15813 15920 15920 15814 15920 15813 15813 15920 15814 15921 15921 15810 15916 15809 15809 15915 15809 15916 15916 15809 15915 15808 15808 15914 15808 15915 15915 15808 15914 15807 15807 15913 15807 15914 15914 15807 15913 15806 15806 15912 15806 15913 15913 15644 15683 15643 15643 15682 15643 15683 15683 15643 15682 15642 15642 15681 15642 15682 15682 15909 15949 15910 15910 15864 15910 15949 15949 15949 16008 15864 15864 15864 16008 15863 15863 15798 15862 15797 15797 15862 15798 15863 15863 15799 15863 15798 15798 15863 15799 15864 15864 15780 15797 15779 15779 15797 15780 15798 15798 15725 15778 15724 15724 15778 15725 15779 15779 15726 15779 15725 15725 15779 15726 15780 15780 15806 15912 15805 15805 15911 15805 15912 15912 15805 15911 15804 15804 15909 15804 15911 15911 15804 15909 15803 15803 15910 15803 15909 15909 15474 15521 15473 15473 15520 15473 15521 15521 15521 15474 15522 15522 15475 15522 15474 15474 15522 15475 15523 15523 15476 15523 15475 15475 15523 15476 15524 15524 15477 15524 15476 15476 15524 15477 15525 15525 15473 15520 15472 15472 15519 15472 15520 15520 15472 15519 15471 15471 15518 15471 15519 15519 15471 15518 15470 15470 15517 15470 15518 15518 15470 15517 15469 15469 15516 15469 15517 15517 15469 15516 15468 15468 15515 15468 15516 15516 15468 15515 15467 15467 15514 15467 15515 15515 15467 15514 15466 15466 15513 15466 15514 15514 15478 15525 15477 15477 15525 15478 15526 15526 15526 15547 15525 15525 15547 15526 15548 15548 15548 15711 15547 15547 15711 15548 15712 15712 15549 15712 15548 15548 15712 15549 15713 15713 15713 15749 15712 15712:15714 \ + 15749 15749 15597 15714 15596 15596 15713 15596 15714 15714 15489 15598 15488 15488 15597 15488 15598 15598 15598 15489 15599 15599 15490 15599 15489 15489 15599 15490 15600 15600 15491 15600 15490 15490 15600 15491 15601 15601 15492 15601 15491 15491 15601 15492 15602 15602 15488 15597 15487 15487 15596 15487 15597 15597 15493 15602 15492 15492 15602 15493 15603 15603 15607 15724 15606 15606 15724 15607 15725 15725 15494 15603 15493 15493 15603 15494 15604 15604 15495 15604 15494 15494 15604 15495 15605 15605 15496 15605 15495 15495 15605 15496 15606 15606 15497 15606 15496 15496 15606 15497 15607 15607 15466 15513 15465 15465 15512 15465 15513 15513 15513 15534 15512 15512 15533 15512 15534 15534 15534 15697 15533 15533 15696 15533 15697 15697 15697 15732 15696 15696 15733 15696 15732 15732 15732 15836 15733 15733 15733 15836 15834 15834 15834 15836 15833 15833 15693 15833 15692 15692 15834 15833 15693 15693 15652 15691 15651 15651 15691 15652 15692 15692 15653 15692 15652 15652 15692 15653 15693 15693 15564 15648 15563 15563 15647 15563 15648 15648 15648 15564 15649 15649 15565 15649 15564 15564 15649 15565 15650 15650 15566 15650 15565 15565 15650 15566 15651 15651 15567 15651 15566 15566 15651 15567 15652 15652 15563 15647 15562 15562 15646 15562 15647 15647 15562 15646 15561 15561 15645 15561 15646 15646 15561 15645 15560 15560 15644 15560 15645 15645 15560 15644 15559 15559 15643 15559 15644 15644 15642 15681 15641 15641 15680 15641 15681 15681 15641 15680 15640 15640 15679 15640 15680 15680 15680 15820 15679 15679 15819 15679 15820 15820 15820 15866 15819 15819 15867 15819 15866 15866 15866 15924 15867 15867 15867 15924 15922 15922 15922 15924 15921 15921 15815 15921 15814 15814 15921 15815 15922 15922 15761 15811 15760 15760 15810 15760 15811 15811 15811 15761 15812 15812 15762 15812 15761 15761 15812 15762 15813 15813 15763 15813 15762 15762 15813 15763 15814 15814 15764 15814 15763 15763 15814 15764 15815 15815 15760 15810 15759 15759 15809 15759 15810 15810 15759 15809 15758 15758 15808 15758 15809 15809 15758 15808 15757 15757 15807 15757 15808 15808 15757 15807 15756 15756 15806 15756 15807 15807 15756 15806 15755 15755 15805 15755 15806 15806 15559 15643 15558 15558 15642 15558 15643 15643 15558 15642 15557 15557 15641 15557 15642 15642 15803 15910 15802 15802 15802 15910 15865 15865 15865 15910 15864 15864 15800 15864 15799 15799 15864 15800 15865 15865 15781 15798 15780 15780 15798 15781 15799 15799 15782 15799 15781 15781 15799 15782 15800 15800 15727 15780 15726 15726 15780 15727 15781 15781 15608 15725 15607 15607 15725 15608 15726 15726 15609 15726 15608 15608 15726 15609 15727 15727 15755 15805 15754 15754 15804 15754 15805 15805 15754 15804 15753 15753 15803 15753 15804 15804 15753 15803 15752 15752 15802 15752 15803 15803 15351 15474 15350 15350 15473 15350 15474 15474 15474 15351 15475 15475 15352 15475 15351 15351 15475 15352 15476 15476 15353 15476 15352 15352 15476 15353 15477 15477 15354 15477 15353 15353 15477 15354 15478 15478 15350 15473 15349 15349 15472 15349 15473 15473 15349 15472 15348 15348 15471 15348 15472 15472 15348 15471 15347 15347 15470 15347 15471 15471 15347 15470 15346 15346 15469 15346 15470 15470 15346 15469 15345 15345 15468 15345 15469 15469 15345 15468 15344 15344 15467 15344 15468 15468 15344 15467 15343 15343 15466 15343 15467 15467 15343 15466 15342 15342 15465 15342 15466 15466 15355 15478 15354 15354 15478 15355 15479 15479 15479 15526 15478 15478 15526 15479 15527 15527 15527 15548 15526 15526 15548 15527 15549 15549 15528 15549 15527 15527:15528 \ + 15595 15549 15549 15595 15713 15549 15549 15594 15713 15595 15595:15596 \ + 15713 15594 15594 15487 15596 15486 15486 15594 15486 15596 15596 15367 15489 15366 15366 15488 15366 15489 15489 15489 15367 15490 15490 15368 15490 15367 15367 15490 15368 15491 15491 15369 15491 15368 15368 15491 15369 15492 15492 15370 15492 15369 15369 15492 15370 15493 15493 15366 15488 15365 15365 15487 15365 15488 15488 15365 15487 15364 15364 15486 15364 15487 15487 15371 15493 15370 15370 15493 15371 15494 15494 15498 15607 15497 15497 15607 15498 15608 15608 15372 15494 15371 15371 15494 15372 15495 15495 15373 15495 15372 15372 15495 15373 15496 15496 15374 15496 15373 15373 15496 15374 15497 15497 15375 15497 15374 15374 15497 15375 15498 15498 15342 15465 15341 15341 15464 15341 15465 15465 15465 15512 15464 15464 15511 15464 15512 15512 15512 15533 15511 15511 15532 15511 15533 15533 15533 15696 15532 15532 15695 15532 15696 15696 15696 15733 15695 15695 15695 15733 15694 15694 15694 15733 15834 15834 15834 15693:15694 \ + 15694 15654 15693 15653 15653 15693 15654 15694 15694 15568 15652 15567 15567 15652 15568 15653 15653 15569 15653 15568 15568 15653 15569 15654 15654 15450 15564 15449 15449 15563 15449 15564 15564 15564 15450 15565 15565 15451 15565 15450 15450 15565 15451 15566 15566 15452 15566 15451 15451 15566 15452 15567 15567 15453 15567 15452 15452 15567 15453 15568 15568 15449 15563 15448 15448 15562 15448 15563 15563 15448 15562 15447 15447 15561 15447 15562 15562 15447 15561 15446 15446 15560 15446 15561 15561 15446 15560 15445 15445 15559 15445 15560 15560 15445 15559 15444 15444 15558 15444 15559 15559 15557 15641 15556 15556 15640 15556 15641 15641 15556 15640 15555 15555 15639 15555 15640 15640 15640 15679 15639 15639 15678 15639 15679 15679 15679 15819 15678 15678 15818 15678 15819 15819 15819 15867 15818 15818 15818 15867 15816 15816 15816 15867 15922 15922 15816 15922 15815 15815 15765 15815 15764 15764 15815 15765 15816 15816 15669 15761 15668 15668 15760 15668 15761 15761 15761 15669 15762 15762 15670 15762 15669 15669 15762 15670 15763 15763 15671 15763 15670 15670 15763 15671 15764 15764 15672 15764 15671 15671 15764 15672 15765 15765 15668 15760 15667 15667 15759 15667 15760 15760 15667 15759 15666 15666 15758 15666 15759 15759 15666 15758 15665 15665 15757 15665 15758 15758 15665 15757 15664 15664 15756 15664 15757 15757 15664 15756 15663 15663 15755 15663 15756 15756 15663 15755 15662 15662 15754 15662 15755 15755 15444 15558 15443 15443 15557 15443 15558 15558 15443 15557 15442 15442 15556 15442 15557 15557 15752 15802 15751 15751 15801 15751 15802 15802 15801:15802 \ + 15865 15865 15801 15865 15800 15800 15783 15800 15782 15782 15800 15783 15801 15801 15728 15781 15727 15727 15781 15728 15782 15782 15729 15782 15728 15728 15782 15729 15783 15783 15610 15727 15609 15609 15727 15610 15728 15728 15499 15608 15498 15498 15608 15499 15609 15609 15500 15609 15499 15499 15609 15500 15610 15610 15662 15754 15661 15661 15753 15661 15754 15754 15661 15753 15660 15660 15752 15660 15753 15753 15660 15752 15659 15659 15751 15659 15752 15752 15326 15351 15325 15325 15350 15325 15351 15351 15351 15326 15352 15352 15327 15352 15326 15326 15352 15327 15353 15353 15328 15353 15327 15327 15353 15328 15354 15354 15329 15354 15328 15328 15354 15329 15355 15355 15325 15350 15324 15324 15349 15324 15350 15350 15324 15349 15323 15323 15348 15323 15349 15349 15323 15348 15322 15322 15347 15322 15348 15348 15322 15347 15321 15321 15346 15321 15347 15347 15321 15346 15320 15320 15345 15320 15346 15346 15320 15345 15319 15319 15344 15319 15345 15345 15319 15344 15318 15318 15343 15318 15344 15344 15318 15343 15317 15317 15342 15317 15343 15343 15317 15342 15316 15316 15341 15316 15342 15342 15330 15355 15329 15329 15355 15330 15356 15356 15356 15479 15355 15355 15479 15356 15480 15480 15480 15527 15479 15479 15527 15480 15528 15528 15481 15528 15480 15480 15528 15481 15529 15529 15529 15595 15528 15528 15595 15529 15594 15594 15484 15594 15529 15529 15486 15594 15484 15484 15364 15486 15363 15363 15484 15363 15486 15486 15239 15367 15238 15238 15366 15238 15367 15367 15367 15239 15368 15368 15240 15368 15239 15239 15368 15240 15369 15369 15241 15369 15240 15240 15369 15241 15370 15370 15242 15370 15241 15241 15370 15242 15371 15371 15238 15366 15237 15237 15365 15237 15366 15366 15237 15365 15236 15236 15364 15236 15365 15365 15236 15364 15235 15235 15363 15235 15364 15364 15243 15371 15242 15242 15371 15243 15372 15372 15376 15498 15375 15375 15498 15376 15499 15499 15244 15372 15243 15243 15372 15244 15373 15373 15245 15373 15244 15244 15373 15245 15374 15374 15246 15374 15245 15245 15374 15246 15375 15375 15247 15375 15246 15246 15375 15247 15376 15376 15316 15341 15315 15315 15340 15315 15341 15341 15341 15464 15340 15340 15463 15340 15464 15464 15464 15511 15463 15463 15510 15463 15511 15511 15511 15532 15510 15510 15531 15510 15532 15532 15532 15695 15531 15531 15531 15695 15655 15655 15694 15655 15695 15695 15655 15694 15654 15654 15570 15654 15569 15569 15654 15570 15655 15655 15454 15568 15453 15453 15568 15454 15569 15569 15455 15569 15454 15454 15569 15455 15570 15570 15426 15450 15425 15425 15449 15425 15450 15450 15450 15426 15451 15451 15427 15451 15426 15426 15451 15427 15452 15452 15428 15452 15427 15427 15452 15428 15453 15453 15429 15453 15428 15428 15453 15429 15454 15454 15425 15449 15424 15424 15448 15424 15449 15449 15424 15448 15423 15423 15447 15423 15448 15448 15423 15447 15422 15422 15446 15422 15447 15447 15422 15446 15421 15421 15445 15421 15446 15446 15421 15445 15420 15420 15444 15420 15445 15445 15420 15444 15419 15419 15443 15419 15444 15444 15442 15556 15441 15441 15555 15441 15556 15556 15441 15555 15440 15440 15554 15440 15555 15555 15555 15639 15554 15554 15638 15554 15639 15639 15639 15678 15638 15638 15676 15638 15678 15678 15678 15818 15676 15676 15817 15676 15818 15818 15817:15818 \ + 15816 15816 15766 15816 15765 15765 15816 15766 15817 15817 15673 15765 15672 15672 15765 15673 15766 15766 15629 15669 15628 15628 15668 15628 15669 15669 15669 15629 15670 15670 15630 15670 15629 15629 15670 15630 15671 15671 15631 15671 15630 15630 15671 15631 15672 15672 15632 15672 15631 15631 15672 15632 15673 15673 15628 15668 15627 15627 15667 15627 15668 15668 15627 15667 15626 15626 15666 15626 15667 15667 15626 15666 15625 15625 15665 15625 15666 15666 15625 15665 15624 15624 15664 15624 15665 15665 15624 15664 15623 15623 15663 15623 15664 15664 15623 15663 15622 15622 15662 15622 15663 15663 15622 15662 15621 15621 15661 15621 15662 15662 15419 15443 15418 15418 15442 15418 15443 15443 15418 15442 15417 15417 15441 15417 15442 15442 15659 15751 15658 15658 15750 15658 15751 15751 15751 15801 15750 15750 15784 15801 15783 15783 15750 15801 15784 15784 15730 15783 15729 15729 15783 15730 15784 15784 15611 15728 15610 15610 15728 15611 15729 15729 15612 15729 15611 15611 15729 15612 15730 15730 15501 15610 15500 15500 15610 15501 15611 15611 15377 15499 15376 15376 15499 15377 15500 15500 15378 15500 15377 15377 15500 15378 15501 15501 15621 15661 15620 15620 15660 15620 15661 15661 15620 15660 15619 15619 15659 15619 15660 15660 15619 15659 15618 15618 15658 15618 15659 15659 15211 15326 15209 15209 15325 15209 15326 15326 15326 15211 15327 15327 15213 15327 15211 15211 15327 15213 15328 15328 15215 15328 15213 15213 15328 15215 15329 15329 15217 15329 15215 15215 15329 15217 15330 15330 15209 15325 15207 15207 15324 15207 15325 15325 15207 15324 15205 15205 15323 15205 15324 15324 15205 15323 15203 15203 15322 15203 15323 15323 15203 15322 15201 15201 15321 15201 15322 15322 15201 15321 15199 15199 15320 15199 15321 15321 15199 15320 15197 15197 15319 15197 15320 15320 15197 15319 15195 15195 15318 15195 15319 15319 15195 15318 15193 15193 15317 15193 15318 15318 15193 15317 15191 15191 15316 15191 15317 15317 15191 15316 15189 15189 15315 15189 15316 15316 15219 15330 15217 15217 15330 15219 15331 15331 15331 15356 15330 15330 15356 15331 15357 15357 15357 15480 15356 15356 15480 15357 15481 15481 15358 15481 15357 15357 15481 15358 15482 15482 15482 15529 15481 15481:15482 \ + 15485 15529 15529 15484 15529 15485 15485 15363 15484 15361 15361 15485 15361 15484 15484 15235 15363 15234 15234 15361 15234 15363 15363 15035 15239 15034 15034 15238 15034 15239 15239 15239 15035 15240 15240 15036 15240 15035 15035 15240 15036 15241 15241 15037 15241 15036 15036 15241 15037 15242 15242 15038 15242 15037 15037 15242 15038 15243 15243 15034 15238 15033 15033 15237 15033 15238 15238 15033 15237 15032 15032 15236 15032 15237 15237 15032 15236 15031 15031 15235 15031 15236 15236 15031 15235 15030 15030 15234 15030 15235 15235 15039 15243 15038 15038 15243 15039 15244 15244 15248 15376 15247 15247 15376 15248 15377 15377 15040 15244 15039 15039 15244 15040 15245 15245 15041 15245 15040 15040 15245 15041 15246 15246 15042 15246 15041 15041 15246 15042 15247 15247 15043 15247 15042 15042 15247 15043 15248 15248 15189 15315 15187 15187 15314 15187 15315 15315 15315 15340 15314 15314 15339 15314 15340 15340 15340 15463 15339 15339 15462 15339 15463 15463 15463 15510 15462 15462 15508 15462 15510 15510 15510 15531 15508 15508 15530 15508 15531 15531 15531 15655 15530 15530 15571 15655 15570 15570:15571 \ + 15530 15655 15655 15456 15570 15455 15455 15570 15456 15571 15571 15430 15454 15429 15429 15454 15430 15455 15455 15431 15455 15430 15430 15455 15431 15456 15456 15300 15426 15299 15299 15425 15299 15426 15426 15426 15300 15427 15427 15301 15427 15300 15300 15427 15301 15428 15428 15302 15428 15301 15301 15428 15302 15429 15429 15303 15429 15302 15302 15429 15303 15430 15430 15299 15425 15298 15298 15424 15298 15425 15425 15298 15424 15297 15297 15423 15297 15424 15424 15297 15423 15296 15296 15422 15296 15423 15423 15296 15422 15295 15295 15421 15295 15422 15422 15295 15421 15294 15294 15420 15294 15421 15421 15294 15420 15293 15293 15419 15293 15420 15420 15293 15419 15292 15292 15418 15292 15419 15419 15417 15441 15416 15416 15440 15416 15441 15441 15416 15440 15415 15415 15439 15415 15440 15440 15440 15554 15439 15439 15553 15439 15554 15554 15554 15638 15553 15553 15637 15553 15638 15638 15638 15676 15637 15637 15677 15637 15676 15676 15676 15817 15677 15677 15767 15817 15766 15766 15677 15817 15767 15767 15674 15766 15673 15673 15767 15766 15674 15674 15633 15673 15632 15632 15673 15633 15674 15674 15587 15629 15586 15586 15628 15586 15629 15629 15629 15587 15630 15630 15588 15630 15587 15587 15630 15588 15631 15631 15589 15631 15588 15588 15631 15589 15632 15632 15590 15632 15589 15589 15632 15590 15633 15633 15586 15628 15585 15585 15627 15585 15628 15628 15585 15627 15584 15584 15626 15584 15627 15627 15584 15626 15583 15583 15625 15583 15626 15626 15583 15625 15582 15582 15624 15582 15625 15625 15582 15624 15581 15581 15623 15581 15624 15624 15581 15623 15580 15580 15622 15580 15623 15623 15580 15622 15579 15579 15621 15579 15622 15622 15579 15621 15578 15578 15620 15578 15621 15621 15292 15418 15291 15291 15417 15291 15418 15418 15291 15417 15290 15290 15416 15290 15417 15417 15618 15658 15617 15617 15656 15617 15658 15658 15658 15750 15656 15656 15731 15656 15750 15750 15731 15750 15784 15784 15731 15784 15730 15730 15613 15730 15612 15612 15730 15613 15731 15731 15502 15611 15501 15501 15611 15502 15612 15612 15503 15612 15502 15502 15612 15503 15613 15613 15379 15501 15378 15378 15501 15379 15502 15502 15249 15377 15248 15248 15377 15249 15378 15378 15250 15378 15249 15249 15378 15250 15379 15379 15578 15620 15577 15577 15619 15577 15620 15620 15577 15619 15576 15576 15618 15576 15619 15619 15576 15618 15575 15575 15617 15575 15618 15618 15210:15211 \ + 15208 15208:15209 15208 15211 15211 15211 15210 15213 15213 15212:15213 \ + 15210 15210 15213 15212 15215 15215 15214:15215 15212 15212 15215 15214 15217 15217 15216:15217 \ + 15214 15214 15217 15216 15219 15219 15208:15209 15206 15206:15207 \ + 15206 15209 15209 15206:15207 15204 15204:15205 15204 15207 15207 15204:15205 \ + 15202 15202:15203 15202 15205 15205 15202:15203 15200 15200:15201 \ + 15200 15203 15203 15200:15201 15198 15198:15199 15198 15201 15201 15198:15199 \ + 15196 15196:15197 15196 15199 15199 15196:15197 15194 15194:15195 \ + 15194 15197 15197 15194:15195 15192 15192:15193 15192 15195 15195 15192:15193 \ + 15190 15190:15191 15190 15193 15193 15190:15191 15188 15188:15189 \ + 15188 15191 15191 15188:15189 15186 15186:15187 15186 15189 15189 15218:15219 \ + 15216 15216 15219 15218 15221 15221 15221 15331 15219 15219 15331 15221 15332 15332 15332 15357 15331 15331 15357 15332 15358 15358 15333 15358 15332 15332 15358 15333 15359 15359 15359 15482 15358 15358 15482 15359 15483 15483 15483 15485 15482 15482 15361 15485 15362 15362 15362 15485 15483 15483 15234 15361 15233 15233 15362 15233 15361 15361 15030 15234 15029 15029 15233 15029 15234 15234 13871 15035 13873 13873 15034 13873 15035 15035 15035 13871 15036 15036 13869 15036 13871 13871 15036 13869 15037 15037 13867 15037 13869 13869 15037 13867 15038 15038 13865 15038 13867 13867 15038 13865 15039 15039 13873 15034 13875 13875 15033 13875 15034 15034 13875 15033 13877 13877 15032 13877 15033 15033 13877 15032 13879 13879 15031 13879 15032 15032 13879 15031 13881 13881 15030 13881 15031 15031 13881 15030 13883 13883 15029 13883 15030 15030 13863 15039 13865 13865 15039 13863 15040 15040 15044 15248 15043 15043 15248 15044 15249 15249 13861 15040 13863 13863 15040 13861 15041 15041 13859 15041 13861 13861 15041 13859 15042 15042 13857 15042 13859 13859 15042 13857 15043 15043 13855 15043 13857 13857 15043 13855 15044 15044 15186:15187 \ + 15184 15184:15185 15184 15187 15187 15187 15314 15185 15185 15313 15185 15314 15314 15314 15339 15313 15313 15338 15313 15339 15339 15339 15462 15338 15338 15460 15338 15462 15462 15462 15508 15460 15460 15509 15460 15508 15508 15508 15530 15509 15509 15457 15509 15530 15530 15457 15530 15571 15571 15457 15571 15456 15456 15432 15456 15431 15431 15456 15432 15457 15457 15304 15430 15303 15303 15430 15304 15431 15431 15305 15431 15304 15304 15431 15305 15432 15432 15152 15300 15150 15150 15299 15150 15300 15300 15300 15152 15301 15301 15154 15301 15152 15152 15301 15154 15302 15302 15156 15302 15154 15154 15302 15156 15303 15303 15158 15303 15156 15156 15303 15158 15304 15304 15150 15299 15148 15148 15298 15148 15299 15299 15148 15298 15146 15146 15297 15146 15298 15298 15146 15297 15144 15144 15296 15144 15297 15297 15144 15296 15142 15142 15295 15142 15296 15296 15142 15295 15140 15140 15294 15140 15295 15295 15140 15294 15138 15138 15293 15138 15294 15294 15138 15293 15136 15136 15292 15136 15293 15293 15136 15292 15134 15134 15291 15134 15292 15292 15290 15416 15289 15289 15415 15289 15416 15416 15289 15415 15288 15288 15414 15288 15415 15415 15415 15439 15414 15414 15438 15414 15439 15439 15439 15553 15438 15438 15552 15438 15553 15553 15553 15637 15552 15552 15636 15552 15637 15637 15637 15677 15636 15636 15636 15677 15675 15675 15675 15677 15767 15767 15767 15674:15675 \ + 15675 15634 15674 15633 15633 15674 15634 15675 15675 15591 15633 15590 15590 15633 15591 15634 15634 15402 15587 15401 15401 15586 15401 15587 15587 15587 15402 15588 15588 15403 15588 15402 15402 15588 15403 15589 15589 15404 15589 15403 15403 15589 15404 15590 15590 15405 15590 15404 15404 15590 15405 15591 15591 15401 15586 15400 15400 15585 15400 15586 15586 15400 15585 15399 15399 15584 15399 15585 15585 15399 15584 15398 15398 15583 15398 15584 15584 15398 15583 15397 15397 15582 15397 15583 15583 15397 15582 15396 15396 15581 15396 15582 15582 15396 15581 15395 15395 15580 15395 15581 15581 15395 15580 15394 15394 15579 15394 15580 15580 15394 15579 15393 15393 15578 15393 15579 15579 15393 15578 15392 15392 15577 15392 15578 15578 15134 15291 15132 15132 15290 15132 15291 15291 15132 15290 15130 15130 15289 15130 15290 15290 15575 15617 15574 15574 15616 15574 15617 15617 15617 15656 15616 15616 15657 15616 15656 15656:15657 \ + 15656 15731 15731 15614 15731 15613 15613:15614 15657 15731 15731 15504 15613 15503 15503 15613 15504 15614 15614 15380 15502 15379 15379 15502 15380 15503 15503 15381 15503 15380 15380 15503 15381 15504 15504 15251 15379 15250 15250 15379 15251 15380 15380 15045 15249 15044 15044 15249 15045 15250 15250 15046 15250 15045 15045 15250 15046 15251 15251 15392 15577 15391 15391 15576 15391 15577 15577 15391 15576 15390 15390 15575 15390 15576 15576 15390 15575 15389 15389 15574 15389 15575 15575 15220:15221 \ + 15218 15218 15221 15220 15223 15223 15223 15332 15221 15221 15332 15223 15333 15333 15225 15333 15223 15223 15333 15225 15334 15334 15334 15359 15333 15333 15359 15334 15360 15360 15360 15483 15359 15359:15360 \ + 15362 15483 15483 15233 15362 15232 15232 15232 15362 15360 15360 15029 15233 15028 15028 15232 15028 15233 15233 13883 15029 13885 13885 15028 13885 15029 15029 13871:13872 \ + 13869 13869 13873:13874 13871 13871:13872 13871 13874 13874 13869:13870 \ + 13867 13867 13870 13869 13872 13872 13867:13868 13865 13865 13868 13867 13870 13870 13865:13866 \ + 13863 13863 13866 13865 13868 13868 13875:13876 13873 13873:13874 \ + 13873 13876 13876:13878 13875 13875:13876 13875 13878 13878:13880 \ + 13877 13877:13878 13877 13880 13880:13882 13879 13879:13880 \ + 13879 13882 13882:13884 13881 13881:13882 13881 13884 13884:13886 \ + 13883 13883:13884 13883 13886 13886 13863:13864 13861 13861 13864 13863 13866 13866 13853 15044 13855 13855 15044 13853 15045 15045 13861:13862 \ + 13859 13859 13862 13861 13864 13864 13859:13860 13857 13857 13860 13859 13862 13862 13857:13858 \ + 13855 13855 13858 13857 13860 13860 13855:13856 13853 13853 13856 13855 13858 13858 15184:15185 \ + 15182 15182:15183 15182 15185 15185 15185 15313 15183 15183 15312 15183 15313 15313 15313 15338 15312 15312 15337 15312 15338 15338 15338 15460 15337 15337 15461 15337 15460 15460 15460 15509 15461 15461 15461 15509 15458 15458 15458 15509 15457 15457 15433 15457 15432 15432 15457 15433 15458 15458 15306 15432 15305 15305 15432 15306 15433 15433 15160 15304 15158 15158 15304 15160 15305 15305 15162 15305 15160 15160 15305 15162 15306 15306 15151:15152 \ + 15149 15149:15150 15149 15152 15152 15152 15151 15154 15154 15153:15154 \ + 15151 15151 15154 15153 15156 15156 15155:15156 15153 15153 15156 15155 15158 15158 15157:15158 \ + 15155 15155 15158 15157 15160 15160 15149:15150 15147 15147:15148 \ + 15147 15150 15150 15147:15148 15145 15145:15146 15145 15148 15148 15145:15146 \ + 15143 15143:15144 15143 15146 15146 15143:15144 15141 15141:15142 \ + 15141 15144 15144 15141:15142 15139 15139:15140 15139 15142 15142 15139:15140 \ + 15137 15137:15138 15137 15140 15140 15137:15138 15135 15135:15136 \ + 15135 15138 15138 15135:15136 15133 15133:15134 15133 15136 15136 15133:15134 \ + 15131 15131:15132 15131 15134 15134 15130 15289 15128 15128 15288 15128 15289 15289 15128 15288 15126 15126 15287 15126 15288 15288 15288 15414 15287 15287 15413 15287 15414 15414 15414 15438 15413 15413 15437 15413 15438 15438 15438 15552 15437 15437 15551 15437 15552 15552 15552 15636 15551 15551 15635 15551 15636 15636 15635:15636 \ + 15675 15675 15635 15675 15634 15634 15592 15634 15591 15591 15634 15592 15635 15635 15406 15591 15405 15405 15591 15406 15592 15592 15275 15402 15274 15274 15401 15274 15402 15402 15402 15275 15403 15403 15276 15403 15275 15275 15403 15276 15404 15404 15277 15404 15276 15276 15404 15277 15405 15405 15278 15405 15277 15277 15405 15278 15406 15406 15274 15401 15273 15273 15400 15273 15401 15401 15273 15400 15272 15272 15399 15272 15400 15400 15272 15399 15271 15271 15398 15271 15399 15399 15271 15398 15270 15270 15397 15270 15398 15398 15270 15397 15269 15269 15396 15269 15397 15397 15269 15396 15268 15268 15395 15268 15396 15396 15268 15395 15267 15267 15394 15267 15395 15395 15267 15394 15266 15266 15393 15266 15394 15394 15266 15393 15265 15265 15392 15265 15393 15393 15265 15392 15264 15264 15391 15264 15392 15392 15131:15132 \ + 15129 15129:15130 15129 15132 15132 15129:15130 15127 15127:15128 \ + 15127 15130 15130 15389 15574 15388 15388 15572 15388 15574 15574 15574 15616 15572 15572 15615 15572 15616 15616 15616 15657 15615 15615 15615 15657 15614 15614 15505 15614 15504 15504 15614 15505 15615 15615 15382 15504 15381 15381 15504 15382 15505 15505 15252 15380 15251 15251 15380 15252 15381 15381 15253 15381 15252 15252 15381 15253 15382 15382 15047 15251 15046 15046 15251 15047 15252 15252 13851 15045 13853 13853 15045 13851 15046 15046 13849 15046 13851 13851 15046 13849 15047 15047 15264 15391 15263 15263 15390 15263 15391 15391 15263 15390 15262 15262 15389 15262 15390 15390 15262 15389 15261 15261 15388 15261 15389 15389 15222:15223 \ + 15220 15220 15223 15222 15225 15225 15224:15225 15222 15222 15225 15224 15227 15227 15227 15334 15225 15225 15227 15231 15334 15334 15231 15360 15334 15334 15231:15232 \ + 15360 15360 15028 15232 15026 15026 15231 15026 15232 15232 13885 15028 13887 13887 15026 13887 15028 15028 13887:13888 \ + 13885 13885:13886 13885 13888 13888 13853:13854 13851 13851 13854 13853 13856 13856 15182:15183 \ + 15180 15180:15181 15180 15183 15183 15183 15312 15181 15181 15311 15181 15312 15312 15312 15337 15311 15311 15335 15311 15337 15337 15337 15461 15335 15335 15335 15461 15459 15459 15459 15461 15458 15458 15434 15458 15433 15433 15458 15434 15459 15459 15307 15433 15306 15306 15433 15307 15434 15434 15164 15306 15162 15162 15306 15164 15307 15307 15159:15160 \ + 15157 15157 15160 15159 15162 15162 15161:15162 15159 15159 15162 15161 15164 15164 15127:15128 \ + 15125 15125:15126 15125 15128 15128 15125:15126 15123 15123:15124 \ + 15123 15126 15126 15126 15287 15124 15124 15286 15124 15287 15287 15287 15413 15286 15286 15411 15286 15413 15413 15413 15437 15411 15411 15435 15411 15437 15437 15437 15551 15435 15435 15550 15435 15551 15551 15551 15635 15550 15550 15593 15635 15592 15592 15550 15635 15593 15593 15407 15592 15406 15406 15592 15407 15593 15593 15279 15406 15278 15278 15406 15279 15407 15407 15095 15275 15093 15093 15274 15093 15275 15275 15275 15095 15276 15276 15097 15276 15095 15095 15276 15097 15277 15277 15099 15277 15097 15097 15277 15099 15278 15278 15101 15278 15099 15099 15278 15101 15279 15279 15093 15274 15091 15091 15273 15091 15274 15274 15091 15273 15089 15089 15272 15089 15273 15273 15089 15272 15087 15087 15271 15087 15272 15272 15087 15271 15085 15085 15270 15085 15271 15271 15085 15270 15083 15083 15269 15083 15270 15270 15083 15269 15081 15081 15268 15081 15269 15269 15081 15268 15079 15079 15267 15079 15268 15268 15079 15267 15077 15077 15266 15077 15267 15267 15077 15266 15075 15075 15265 15075 15266 15266 15075 15265 15073 15073 15264 15073 15265 15265 15073 15264 15071 15071 15263 15071 15264 15264 15261 15388 15260 15260 15386 15260 15388 15388 15388 15572 15386 15386 15573 15386 15572 15572 15572 15615 15573 15573 15506 15615 15505 15505 15573 15615 15506 15506 15383 15505 15382 15382 15505 15383 15506 15506 15254 15382 15253 15253 15382 15254 15383 15383 15048 15252 15047 15047 15252 15048 15253 15253 15049 15253 15048 15048 15253 15049 15254 15254 13847 15047 13849 13849 15047 13847 15048 15048 13851:13852 \ + 13849 13849 13852 13851 13854 13854 13849:13850 13847 13847 13850 13849 13852 13852 15071 15263 15069 15069 15262 15069 15263 15263 15069 15262 15067 15067 15261 15067 15262 15262 15067 15261 15065 15065 15260 15065 15261 15261 15226:15227 \ + 15224 15224 15227 15226 15229 15229 15229 15231 15227 15227 15027 15231 15229 15229 15026 15231 15027 15027 13887 15026 13889 13889 15027 13889 15026 15026 13889:13890 \ + 13887 13887:13888 13887 13890 13890 13798 13913 13796 13796 13912 13796 13913 13913 13913 13798 13914 13914 13796 13912 13794 13794 13911 13794 13912 13912 13794 13911 13792 13792 13910 13792 13911 13911 13800 13914 13798 13798 13914 13800 13915 13915 13792 13910 13790 13790 13909 13790 13910 13910 13790 13909 13788 13788 13908 13788 13909 13909 13788 13908 13786 13786 13907 13786 13908 13908 13786 13907 13784 13784 13906 13784 13907 13907 13784 13906 13782 13782 13905 13782 13906 13906 13782 13905 13780 13780 13904 13780 13905 13905 13780 13904 13778 13778 13903 13778 13904 13904 13778 13903 13776 13776 13902 13776 13903 13903 13802 13915 13800 13800 13915 13802 13916 13916 13808 13918 13806 13806 13917 13806 13918 13918 13918 13808 13919 13919 13806 13917 13804 13804 13916 13804 13917 13917 13804 13916 13802 13802 13810 13919 13808 13808 13919 13810 13920 13920 15180:15181 \ + 15178 15178:15179 15178 15181 15181 15181 15311 15179 15179 15310 15179 15311 15311 15311 15335 15310 15310 15336 15310 15335 15335:15336 \ + 15335 15459 15459 15336 15459 15434 15434 15308 15434 15307 15307:15308 \ + 15336 15434 15434 15166 15307 15164 15164 15307 15166 15308 15308 15163:15164 \ + 15161 15161 15164 15163 15166 15166 15123:15124 15121 15121:15122 \ + 15121 15124 15124 15124 15286 15122 15122 15285 15122 15286 15286 15286 15411 15285 15285 15412 15285 15411 15411 15411 15435 15412 15412 15436 15412 15435 15435 15435 15550 15436 15436 15408 15436 15550 15550 15408 15550 15593 15593 15408 15593 15407 15407 15280 15407 15279 15279 15407 15280 15408 15408 15103 15279 15101 15101 15279 15103 15280 15280 15094:15095 \ + 15092 15092:15093 15092 15095 15095 15095 15094 15097 15097 15096:15097 \ + 15094 15094 15097 15096 15099 15099 15098:15099 15096 15096 15099 15098 15101 15101 15100:15101 \ + 15098 15098 15101 15100 15103 15103 15092:15093 15090 15090:15091 \ + 15090 15093 15093 15090:15091 15088 15088:15089 15088 15091 15091 15088:15089 \ + 15086 15086:15087 15086 15089 15089 15086:15087 15084 15084:15085 \ + 15084 15087 15087 15084:15085 15082 15082:15083 15082 15085 15085 15082:15083 \ + 15080 15080:15081 15080 15083 15083 15080:15081 15078 15078:15079 \ + 15078 15081 15081 15078:15079 15076 15076:15077 15076 15079 15079 15076:15077 \ + 15074 15074:15075 15074 15077 15077 15074:15075 15072 15072:15073 \ + 15072 15075 15075 15072:15073 15070 15070:15071 15070 15073 15073 15070:15071 \ + 15068 15068:15069 15068 15071 15071 15065 15260 15063 15063 15259 15063 15260 15260 15260 15386 15259 15259 15387 15259 15386 15386 15386 15573 15387 15387 15387 15573 15507 15507 15507 15573 15506 15506 15384 15506 15383 15383 15506 15384 15507 15507 15255 15383 15254 15254 15383 15255 15384 15384 15050 15254 15049 15049 15254 15050 15255 15255 13845 15048 13847 13847 15048 13845 15049 15049 13843 15049 13845 13845 15049 13843 15050 15050 13847:13848 \ + 13845 13845 13848 13847 13850 13850 15068:15069 15066 15066:15067 \ + 15066 15069 15069 15066:15067 15064 15064:15065 15064 15067 15067 15064:15065 \ + 15062 15062:15063 15062 15065 15065 15228:15229 15226 15226 15229 15228 15230 15230 15230 15027 15229 15229 13889 15027 13891 13891 13891 15027 15230 15230 13891:13892 \ + 13889 13889:13890 13889 13892 13892 13776 13902 13773 13773 13901 13773 13902 13902 13797:13798 \ + 13795 13795:13796 13795 13798 13798 13798 13797 13800 13800 13799:13800 \ + 13797 13797 13800 13799 13802 13802 13795:13796 13793 13793:13794 \ + 13793 13796 13796 13793:13794 13791 13791:13792 13791 13794 13794 13791:13792 \ + 13789 13789:13790 13789 13792 13792 13789:13790 13787 13787:13788 \ + 13787 13790 13790 13787:13788 13785 13785:13786 13785 13788 13788 13785:13786 \ + 13783 13783:13784 13783 13786 13786 13783:13784 13781 13781:13782 \ + 13781 13784 13784 13781:13782 13779 13779:13780 13779 13782 13782 13779:13780 \ + 13777 13777:13778 13777 13780 13780 13777:13778 13775 13775:13776 \ + 13775 13778 13778 13775:13776 13772 13772:13773 13772 13776 13776 13801:13802 \ + 13799 13799 13802 13801 13804 13804 13812 13920 13810 13810 13920 13812 13921 13921 13807:13808 \ + 13805 13805:13806 13805 13808 13808 13808 13807 13810 13810 13809:13810 \ + 13807 13807 13810 13809 13812 13812 13805:13806 13803 13803:13804 \ + 13803 13806 13806 13803:13804 13801 13801 15178:15179 \ + 15175 15175:15176 15175 15179 15179 15179 15310 15176 15176 15309 15176 15310 15310 15310 15336 15309 15309 15309 15336 15308 15308 15168 15308 15166 15166 15308 15168 15309 15309 15165:15166 \ + 15163 15163 15166 15165 15168 15168 15121:15122 15119 15119:15120 \ + 15119 15122 15122 15122 15285 15120 15120 15284 15120 15285 15285 15285 15412 15284 15284 15284 15412 15410 15410 15412 15436 15410 15410 15410 15436 15409 15409 15409 15436 15408 15408 15281 15408 15280 15280 15408 15281 15409 15409 15105 15280 15103 15103 15280 15105 15281 15281 15102:15103 \ + 15100 15100 15103 15102 15105 15105 15062:15063 15060 15060:15061 \ + 15060 15063 15063 15063 15259 15061 15061 15258 15061 15259 15259 15259 15387 15258 15258 15258 15387 15385 15385 15385 15387 15507 15507 15385 15507 15384 15384 15256 15384 15255 15255 15384 15256 15385 15385 15051 15255 15050 15050 15255 15051 15256 15256 13841 15050 13843 13843 15050 13841 15051 15051 13845:13846 \ + 13843 13843 13846 13845 13848 13848 13843:13844 13841 13841 13844 13843 13846 13846 13814 13921 13812 13812 13921 13814 13922 13922 13816 13922 13814 13814 13922 13816 13923 13923 13893 15230 15228 15228 13893 13891 15230 15230 13893:13894 \ + 13891 13891:13892 13891 13894 13894 13773 13901 13774 13774 13898 13774 13901 13901 13901 13899 13898 13898 13772:13773 \ + 13771 13771 13774 13771 13773 13773 13795 14061 13797 13797 13793 14062 13795 13795 14061 13795 14062 14062 13797 14060 13799 13799 14060 13797 14061 14061 13799 14059 13801 13801 14059 13799 14060 14060 13791 14063 13793 13793 14062 13793 14063 14063 13789 14064 13791 13791 14063 13791 14064 14064 13787 14065 13789 13789 14064 13789 14065 14065 13785 14066 13787 13787 14065 13787 14066 14066 13783 14067 13785 13785 14066 13785 14067 14067 13781 14068 13783 13783 14067 13783 14068 14068 13779 14069 13781 13781 14068 13781 14069 14069 13777 14070 13779 13779 14069 13779 14070 14070 13775 14071 13777 13777 14070 13777 14071 14071 13772 14072 13775 13775 14071 13775 14072 14072 13771 14073 13772 13772 14072 13772 14073 14073 13801 14058 13803 13803 14058 13801 14059 14059 13811:13812 \ + 13809 13809 13812 13811 13814 13814 13805 14056 13807 13807 13803 14057 13805 13805 14056 13805 14057 14057 13807 14055 13809 13809 14055 13807 14056 14056 13809 14054 13811 13811 14054 13809 14055 14055 14057 13803 14058 14058 15175:15176 \ + 15174 15174 15177 15174 15176 15176 15176 15309 15177 15177 15170 15309 15168 15168 15177 15309 15170 15170 15167:15168 \ + 15165 15165 15168 15167 15170 15170 15119:15120 15116 15116:15117 \ + 15116 15120 15120 15120 15284 15117 15117 15283 15117 15284 15284 15283:15284 \ + 15410 15410 15283 15410 15282 15282 15409 15282 15410 15410 15282 15409 15281 15281 15107 15281 15105 15105 15281 15107 15282 15282 15104:15105 \ + 15102 15102 15105 15104 15107 15107 15060:15061 15057 15057:15058 \ + 15057 15061 15061 15061 15258 15058 15058 15257 15058 15258 15258 15257:15258 \ + 15385 15385 15257 15385 15256 15256 15052 15256 15051 15051 15256 15052 15257 15257 13839 15051 13841 13841 15051 13839 15052 15052 13841:13842 \ + 13839 13839 13842 13841 13844 13844 13818 13923 13816 13816 13923 13818 13924 13924 13813:13814 \ + 13811 13811 13814 13813 13816 13816 13815:13816 13813 13813 13816 13815 13818 13818 13893 13895 13894 13894 13899 13896 13898 13898 13771 13774 13829 13829 13774 13898 13829 13829 13897:13898 \ + 13896 13896 13900 13898 13897 13897 13829 13898 13900 13900 13829 14074 13771 13771 14073 13771 14074 14074 14061 14200 14060 14060 14062 14201 14061 14061 14200 14061 14201 14201 14063 14202 14062 14062 14201 14062 14202 14202 14060 14199 14059 14059 14199 14060 14200 14200 14059 14198 14058 14058 14198 14059 14199 14199 14064 14203 14063 14063 14202 14063 14203 14203 14065 14204 14064 14064 14203 14064 14204 14204 14066 14205 14065 14065 14204 14065 14205 14205 14067 14206 14066 14066 14205 14066 14206 14206 14068 14207 14067 14067 14206 14067 14207 14207 14069 14208 14068 14068 14207 14068 14208 14208 14070 14209 14069 14069 14208 14069 14209 14209 14071 14210 14070 14070 14209 14070 14210 14210 14072 14211 14071 14071 14210 14071 14211 14211 14073 14212 14072 14072 14211 14072 14212 14212 14074 14213 14073 14073 14212 14073 14213 14213 14058 14197 14057 14057 14197 14058 14198 14198 13811 14053 13813 13813 14053 13811 14054 14054 14056 14195 14055 14055 14057 14196 14056 14056 14195 14056 14196 14196 14196 14057 14197 14197 14055 14194 14054 14054 14194 14055 14195 14195 14054 14193 14053 14053 14193 14054 14194 14194 15174 15177 15173 15173 15173 15177 15172 15172 15172 15177 15170 15170 15169:15170 \ + 15167 15167 15170 15169 15172 15172 15116:15117 15115 15115 15118 15115 15117 15117 15117 15283 15118 15118 15111 15283 15109 15109 15282 15109 15283 15283 15118 15283 15111 15111 15109 15282 15107 15107 15106:15107 \ + 15104 15104 15107 15106 15109 15109 15057:15058 15056 15056 15059 15056 15058 15058 15058 15257 15059 15059 15053 15257 15052 15052 15059 15257 15053 15053 13837 15052 13839 13839 15052 13837 15053 15053 13839:13840 \ + 13837 13837 13840 13839 13842 13842 13820 13924 13818 13818 13924 13820 13925 13925 13822 13925 13820 13820 13925 13822 13926 13926 13817:13818 \ + 13815 13815 13818 13817 13820 13820 13813 14052 13815 13815 14052 13813 14053 14053 13815 14051 13817 13817 14051 13815 14052 14052 13900 14075 13829 13829 14074 13829 14075 14075 13900 14076 14075 14075 14075 14080 14074 14074 14080 14213 14074 14074 14199 14325 14198 14198 14200 14326 14199 14199 14325 14199 14326 14326 14201 14327 14200 14200 14326 14200 14327 14327 14202 14328 14201 14201 14327 14201 14328 14328 14198 14324 14197 14197 14324 14198 14325 14325 14203 14329 14202 14202 14328 14202 14329 14329 14204 14330 14203 14203 14329 14203 14330 14330 14205 14331 14204 14204 14330 14204 14331 14331 14206 14332 14205 14205 14331 14205 14332 14332 14207 14333 14206 14206 14332 14206 14333 14333 14208 14334 14207 14207 14333 14207 14334 14334 14209 14335 14208 14208 14334 14208 14335 14335 14210 14336 14209 14209 14335 14209 14336 14336 14211 14337 14210 14210 14336 14210 14337 14337 14212 14338 14211 14211 14337 14211 14338 14338 14213 14240 14212 14212 14212 14240 14338 14338 14079 14213 14080 14080 14213 14079 14214 14214 14214 14240 14213 14213 14197 14323 14196 14196 14323 14197 14324 14324 14053 14192 14052 14052 14192 14053 14193 14193:14194 \ + 14320 14193 14193 14195 14321 14194 14194 14320 14194 14321 14321 14196 14322 14195 14195 14321 14195 14322 14322 14322 14196 14323 14323 14193 14319 14192 14192 14319 14193 14320 14320 15171 15173 15172 15172 15171:15172 \ + 15169 15169 15115 15118 15114 15114 15114 15118 15113 15113 15113 15118 15111 15111 15108:15109 \ + 15106 15106 15109 15108 15111 15111 15110:15111 15108 15108 15111 15110 15113 15113 15056 15059 15055 15055 15055 15059 15054 15054 15054 15059 15053 15053 13836 15053 13837 13837 15053 13836 15054 15054 13837:13838 \ + 13836 13836 13838 13837 13840 13840 13819:13820 13817 13817 13820 13819 13822 13822 13821:13822 \ + 13819 13819 13822 13821 13824 13824 13824 13926 13822 13822 13926 13824 13927 13927 13817 14050 13819 13819 14050 13817 14051 14051:14052 \ + 14191 14051 14051 14191 14052 14192 14192 14051 14190 14050 14050 14190 14051 14191 14191 14076 14080 14075 14075 14077 14080 14076 14076 14080 14077 14079 14079 14324 14348 14323 14323 14325 14349 14324 14324 14348 14324 14349 14349 14326 14350 14325 14325 14349 14325 14350 14350 14327 14351 14326 14326 14350 14326 14351 14351 14328 14352 14327 14327 14351 14327 14352 14352 14329 14353 14328 14328 14352 14328 14353 14353 14330 14354 14329 14329 14353 14329 14354 14354 14331 14355 14330 14330 14354 14330 14355 14355 14332 14356 14331 14331 14355 14331 14356 14356 14333 14357 14332 14332 14356 14332 14357 14357 14334 14358 14333 14333 14357 14333 14358 14358 14335 14359 14334 14334 14358 14334 14359 14359 14336 14360 14335 14335 14359 14335 14360 14360 14337 14361 14336 14336 14360 14336 14361 14361 14338 14362 14337 14337 14361 14337 14362 14362 14240 14363 14338 14338 14362 14338 14363 14363 14240 14214 14239 14239:14240 \ + 14239 14363 14363 14078:14079 14077 14077 14079 14078 14082 14082 14082 14214 14079 14079 14214 14082 14215 14215 14215 14239 14214 14214 14323 14347 14322 14322 14347 14323 14348 14348 14192 14318 14191 14191 14318 14192 14319 14319 14319 14343 14318 14318 14320 14344 14319 14319 14343 14319 14344 14344 14321 14345 14320 14320 14344 14320 14345 14345 14322 14346 14321 14321 14345 14321 14346 14346 14346 14322 14347 14347 15112 15114 15113 15113 15112:15113 \ + 15110 15110 13835 15055 15054 15054 13835 15054 13836 13836 13836 13833 13835 13835 13833 13836 13838 13838 13819 14049 13821 13821 14049 13819 14050 14050 13823:13824 \ + 13821 13821 13821 14047 13823 13823 14047 13821 14049 14049 13824 13823 13826 13826 13826 13927 13824 13824 13834 13927 13826 13826 14050 14189 14049 14049 14189 14050 14190 14190:14191 \ + 14317 14190 14190 14317 14191 14318 14318 14190 14315 14189 14189 14315 14190 14317 14317 14348 14462 14347 14347 14349 14463 14348 14348 14462 14348 14463 14463 14350 14464 14349 14349 14463 14349 14464 14464 14351 14465 14350 14350 14464 14350 14465 14465 14352 14466 14351 14351 14465 14351 14466 14466 14353 14467 14352 14352 14466 14352 14467 14467 14354 14468 14353 14353 14467 14353 14468 14468 14355 14469 14354 14354 14468 14354 14469 14469 14356 14470 14355 14355 14469 14355 14470 14470 14357 14471 14356 14356 14470 14356 14471 14471 14358 14472 14357 14357 14471 14357 14472 14472 14359 14473 14358 14358 14472 14358 14473 14473 14360 14474 14359 14359 14473 14359 14474 14474 14361 14475 14360 14360 14474 14360 14475 14475 14361 14413 14434 14434 14362 14413 14361 14361 14361 14434 14475 14475 14363 14365 14362 14362 14365 14413 14362 14362 14239 14365 14363 14363 14239 14215 14241 14241 14241 14365 14239 14239 14081:14082 \ + 14078 14078 14082 14081 14084 14084 14084 14215 14082 14082 14215 14084 14216 14216 14216 14241 14215 14215 14347 14461 14346 14346 14461 14347 14462 14462 14318 14342 14317 14317 14342 14318 14343 14343 14343 14457 14342 14342 14344 14458 14343 14343 14457 14343 14458 14458 14345 14459 14344 14344 14458 14344 14459 14459 14346 14460 14345 14345 14459 14345 14460 14460 14460 14346 14461 14461 13835 13833 13832 13832 14049 14188 14047 14047 14188 14049 14189 14189 13825:13826 \ + 13823 13823 14048 13823 14047 14047 13823 14048 13825 13825 14047 14187 14048 14048 14187 14047 14188 14188 13826 13825 13828 13828 13828 13834 13826 13826 13831 13834 13830 13830 13830 13834 13828 13828 14316 14189 14315 14315 14189 14316 14188 14188 14315 14339 14316 14316:14317 \ + 14341 14315 14315 14339 14315 14341 14341 14341 14317 14342 14342 14462 14546 14461 14461 14463 14547 14462 14462 14546 14462 14547 14547 14464 14548 14463 14463 14547 14463 14548 14548 14465 14549 14464 14464 14548 14464 14549 14549 14466 14550 14465 14465 14549 14465 14550 14550 14467 14551 14466 14466 14550 14466 14551 14551 14468 14552 14467 14467 14551 14467 14552 14552 14469 14553 14468 14468 14552 14468 14553 14553 14470 14554 14469 14469 14553 14469 14554 14554 14471 14555 14470 14470 14554 14470 14555 14555 14472 14556 14471 14471 14555 14471 14556 14556 14473 14557 14472 14472 14556 14472 14557 14557 14474 14558 14473 14473 14557 14473 14558 14558 14475 14559 14474 14474 14558 14474 14559 14559 14475 14434 14559 14559 14412 14434 14413 14413 14434 14412 14435 14435 14435 14559 14434 14434 14413 14364 14412 14412 14364 14413 14365 14365 14365 14241 14364 14364 14241 14216 14242 14242 14242 14364 14241 14241 14083:14084 \ + 14081 14081 14084 14083 14086 14086 14086 14216 14084 14084 14216 14086 14217 14217 14217 14242 14216 14216 14461 14545 14460 14460 14545 14461 14546 14546 14342 14456 14341 14341 14456 14342 14457 14457 14457 14541 14456 14456 14458 14542 14457 14457 14541 14457 14542 14542 14459 14543 14458 14458 14542 14458 14543 14543 14460 14544 14459 14459 14543 14459 14544 14544 14544 14460 14545 14545 14187:14188 \ + 14314 14314 14188 14316 14314 14314 13827:13828 13825 13825 13827 13825 14046 14046 13825 14048 14046 14046 14046 14048 14045 14045 14048 14187 14045 14045 14045 14187 14043 14043 14186 14043 14187 14187 14187 14314 14186 14186 13827 13830 13828 13828 14340 14316 14339 14339 14316 14340 14314 14314 14339 14454 14340 14340:14341 \ + 14455 14339 14339 14454 14339 14455 14455 14455 14341 14456 14456 14546 14585 14545 14545 14547 14586 14546 14546 14585 14546 14586 14586 14548 14587 14547 14547 14586 14547 14587 14587 14549 14588 14548 14548 14587 14548 14588 14588 14550 14589 14549 14549 14588 14549 14589 14589 14551 14590 14550 14550 14589 14550 14590 14590 14552 14591 14551 14551 14590 14551 14591 14591 14553 14592 14552 14552 14591 14552 14592 14592 14554 14593 14553 14553 14592 14553 14593 14593 14555 14594 14554 14554 14593 14554 14594 14594 14556 14595 14555 14555 14594 14555 14595 14595 14557 14596 14556 14556 14595 14556 14596 14596 14558 14597 14557 14557 14596 14557 14597 14597 14559 14598 14558 14558 14597 14558 14598 14598 14435 14599 14559 14559 14598 14559 14599 14599 14366 14412 14364 14364 14412 14366 14414 14414 14414 14435 14412 14412 14435 14414 14436 14436 14436 14599 14435 14435 14364 14242 14366 14366 14242 14217 14243 14243 14243 14366 14242 14242 14085:14086 \ + 14083 14083 14086 14085 14088 14088 14088 14217 14086 14086 14217 14088 14218 14218 14218 14243 14217 14217 14545 14584 14544 14544 14584 14545 14585 14585 14456 14540 14455 14455 14540 14456 14541 14541:14542 \ + 14580 14541 14541 14581 14541 14580 14580 14541 14581 14540 14540 14543 14582 14542 14542 14580 14542 14582 14582 14544 14583 14543 14543 14582 14543 14583 14583 14583 14544 14584 14584 13827 14046 14044 14044:14045 \ + 14044 14046 14046 14044:14045 14042 14042:14043 14042 14045 14045 14042:14043 \ + 14040 14040:14041 14040 14043 14043 14043 14186 14041 14041 14185 14041 14186 14186 14186 14313 14185 14185 14313 14186 14314 14314 14314 14340 14313 14313 14312 14340 14454 14454 14313 14340 14312 14312 14312 14454 14497 14497 14454 14539 14497 14497 14455 14539 14454 14454 14539 14455 14540 14540 14585 14725 14584 14584 14586 14726 14585 14585 14725 14585 14726 14726 14587 14727 14586 14586 14726 14586 14727 14727 14588 14728 14587 14587 14727 14587 14728 14728 14589 14729 14588 14588 14728 14588 14729 14729 14590 14730 14589 14589 14729 14589 14730 14730 14591 14731 14590 14590 14730 14590 14731 14731 14592 14732 14591 14591 14731 14591 14732 14732 14593 14733 14592 14592 14732 14592 14733 14733 14594 14734 14593 14593 14733 14593 14734 14734 14595 14735 14594 14594 14734 14594 14735 14735 14596 14736 14595 14595 14735 14595 14736 14736 14597 14737 14596 14596 14736 14596 14737 14737:14738 \ + 14737 14597 14597 14738 14597:14598 14598:14599 14637 14598 14598 14598 14637 14738 14738 14599 14436 14600 14600 14600 14637 14599 14599 14366 14243 14367 14367 14367 14414 14366 14366 14414 14367 14415 14415 14415 14436 14414 14414 14436 14415 14437 14437 14437 14600 14436 14436 14243 14218 14244 14244 14244 14367 14243 14243 14087:14088 \ + 14085 14085 14088 14087 14090 14090 14090 14218 14088 14088 14218 14090 14219 14219 14219 14244 14218 14218 14584 14724 14583 14583 14724 14584 14725 14725 14539:14540 \ + 14579 14579 14540 14581 14579 14579:14580 14721 14581 14581:14582 \ + 14722 14580 14580 14721 14580 14722 14722 14579 14581 14671 14671 14581 14721 14671 14671 14583 14723 14582 14582 14722 14582 14723 14723 14723 14583 14724 14724 14040:14041 \ + 14038 14038:14039 14038 14041 14041 14041 14185 14039 14039 14184 14039 14185 14185 14185 14312 14184 14184 14312 14185 14313 14313 14311 14184 14312 14312 14312 14497 14311 14311 14496 14311 14497 14497 14497 14539 14496 14496 14538 14496 14539 14539 14539 14579 14538 14538 14725 14772 14724 14724 14726 14773 14725 14725 14772 14725 14773 14773 14727 14774 14726 14726 14773 14726 14774 14774 14728 14775 14727 14727 14774 14727 14775 14775 14729 14776 14728 14728 14775 14728 14776 14776 14730 14777 14729 14729 14776 14729 14777 14777 14731 14778 14730 14730 14777 14730 14778 14778 14732 14779 14731 14731 14778 14731 14779 14779 14733 14780 14732 14732 14779 14732 14780 14780 14734 14781 14733 14733 14780 14733 14781 14781 14735 14782 14734 14734 14781 14734 14782 14782 14736 14783 14735 14735 14782 14735 14783 14783 14737 14784 14736 14736 14783 14736 14784 14784 14738 14740 14737 14737 14740 14784 14737 14737 14637 14740 14738 14738 14637 14600 14636 14636 14636 14740 14637 14637 14600 14437 14601 14601 14601 14636 14600 14600 14367 14244 14368 14368 14368 14415 14367 14367 14415 14368 14416 14416 14416 14437 14415 14415 14437 14416 14438 14438 14438 14601 14437 14437 14244 14219 14245 14245 14245 14368 14244 14244 14089:14090 \ + 14087 14087 14090 14089 14092 14092 14092 14219 14090 14090 14219 14092 14220 14220 14220 14245 14219 14219 14724 14770 14723 14723 14770 14724 14772 14772 14578 14538 14579 14579 14671 14578:14579 \ + 14579 14671 14721 14670 14670 14720 14670 14721 14721 14721:14722 \ + 14720 14720 14723 14771 14722 14722 14722 14771 14720 14720 14671 14670 14578 14578 14771 14723 14770 14770 14038:14039 \ + 14036 14036:14037 14036 14039 14039 14039 14184 14037 14037 14183 14037 14184 14184 14184 14311 14183 14183 14310 14183 14311 14311 14311 14496 14310 14310 14495 14310 14496 14496 14496 14538 14495 14495 14537 14495 14538 14538 14538 14578 14537 14537 14772 14827 14770 14770 14773 14829 14772 14772 14827 14772 14829 14829 14774 14830 14773 14773 14829 14773 14830 14830 14775 14831 14774 14774 14830 14774 14831 14831 14776 14832 14775 14775 14831 14775 14832 14832 14777 14833 14776 14776 14832 14776 14833 14833 14778 14834 14777 14777 14833 14777 14834 14834 14779 14835 14778 14778 14834 14778 14835 14835 14780 14836 14779 14779 14835 14779 14836 14836 14781 14837 14780 14780 14836 14780 14837 14837 14782 14838 14781 14781 14837 14781 14838 14838 14783 14839 14782 14782 14838 14782 14839 14839 14784 14800 14783 14783 14783 14800 14839 14839 14739 14784 14740 14740 14784 14739 14785 14785 14785 14800 14784 14784 14740 14636 14739 14739 14636 14601 14638 14638 14638 14739 14636 14636 14601 14438 14602 14602 14602 14638 14601 14601 14368 14245 14369 14369 14369 14416 14368 14368 14416 14369 14417 14417 14417 14438 14416 14416 14438 14417 14439 14439 14439 14602 14438 14438 14245 14220 14246 14246 14246 14369 14245 14245 14091:14092 \ + 14089 14089 14092 14091 14094 14094 14094 14220 14092 14092 14220 14094 14221 14221 14221 14246 14220 14220 14828 14770 14827 14827 14770 14828 14771 14771 14577 14537 14578 14578 14578 14670 14577 14577 14669 14577 14670 14670 14670 14720 14669 14669 14719 14669 14720 14720 14720 14826 14719 14719:14720 \ + 14771 14826 14826 14771 14828 14826 14826 14036:14037 \ + 14034 14034:14035 14034 14037 14037 14037 14183 14035 14035 14182 14035 14183 14183 14183 14310 14182 14182 14309 14182 14310 14310 14310 14495 14309 14309 14494 14309 14495 14495 14495 14537 14494 14494 14536 14494 14537 14537 14537 14577 14536 14536 14827 14840 14828 14828:14829 \ + 14841 14827 14827 14840 14827 14841 14841 14830 14842 14829 14829 14841 14829 14842 14842 14831 14843 14830 14830 14842 14830 14843 14843 14832 14844 14831 14831 14843 14831 14844 14844 14833 14845 14832 14832 14844 14832 14845 14845 14834 14846 14833 14833 14845 14833 14846 14846 14835 14847 14834 14834 14846 14834 14847 14847 14836 14848 14835 14835 14847 14835 14848 14848 14837 14849 14836 14836 14848 14836 14849 14849 14838 14850 14837 14837 14849 14837 14850 14850 14839 14851 14838 14838 14850 14838 14851 14851 14800 14852 14839 14839 14851 14839 14852 14852 14800 14785 14799 14799:14800 \ + 14799 14852 14852 14739 14638 14741 14741 14741 14785 14739 14739 14785 14741 14786 14786 14786 14799 14785 14785 14638 14602 14639 14639 14639 14741 14638 14638 14602 14439 14603 14603 14603 14639 14602 14602 14369 14246 14370 14370 14370 14417 14369 14369 14417 14370 14418 14418 14418 14439 14417 14417 14439 14418 14440 14440 14440 14603 14439 14439 14246 14221 14247 14247 14247 14370 14246 14246 14093:14094 \ + 14091 14091 14094 14093 14096 14096 14096 14221 14094 14094 14221 14096 14222 14222 14222 14247 14221 14221 14825 14828 14840 14840 14826 14828 14825 14825 14576 14536 14577 14577 14577 14669 14576 14576 14668 14576 14669 14669 14669 14719 14668 14668 14718 14668 14719 14719 14719 14825 14718 14718 14825 14719 14826 14826 14034:14035 \ + 14032 14032:14033 14032 14035 14035 14035 14182 14033 14033 14181 14033 14182 14182 14182 14309 14181 14181 14308 14181 14309 14309 14309 14494 14308 14308 14493 14308 14494 14494 14494 14536 14493 14493 14535 14493 14536 14536 14536 14576 14535 14535 14825 14840 14864 14864 14841 14865 14840 14840 14840 14865 14864 14864 14842 14866 14841 14841 14865 14841 14866 14866 14843 14867 14842 14842 14866 14842 14867 14867 14844 14868 14843 14843 14867 14843 14868 14868 14845 14869 14844 14844 14868 14844 14869 14869 14846 14870 14845 14845 14869 14845 14870 14870 14847 14871 14846 14846 14870 14846 14871 14871 14848 14872 14847 14847 14871 14847 14872 14872 14849 14873 14848 14848 14872 14848 14873 14873 14850 14874 14849 14849 14873 14849 14874 14874 14851 14875 14850 14850 14874 14850 14875 14875 14852 14876 14851 14851 14875 14851 14876 14876 14799 14876 14852 14852 14799 14786 14801 14801 14801 14876 14799 14799 14741 14639 14742 14742 14742 14786 14741 14741 14786 14742 14787 14787 14787 14801 14786 14786 14639 14603 14640 14640 14640 14742 14639 14639 14603 14440 14604 14604 14604 14640 14603 14603 14370 14247 14371 14371 14371 14418 14370 14370 14418 14371 14419 14419 14419 14440 14418 14418 14440 14419 14441 14441 14441 14604 14440 14440 14247 14222 14248 14248 14248 14371 14247 14247 14095:14096 \ + 14093 14093 14096 14095 14098 14098 14098 14222 14096 14096 14222 14098 14223 14223 14223 14248 14222 14222 14824 14718 14825 14825 14825 14864 14824 14824 14575 14535 14576 14576 14576 14668 14575 14575 14667 14575 14668 14668 14668 14718 14667 14667 14717 14667 14718 14718 14718 14824 14717 14717 14032:14033 \ + 14030 14030:14031 14030 14033 14033 14033 14181 14031 14031 14180 14031 14181 14181 14181 14308 14180 14180 14307 14180 14308 14308 14308 14493 14307 14307 14492 14307 14493 14493 14493 14535 14492 14492 14534 14492 14535 14535 14535 14575 14534 14534 14863 14824 14864 14864 14864:14865 \ + 14863 14863 14863 14865 14921 14921 14866 14923 14865 14865 14865 14923 14921 14921 14867 14922 14866 14866 14923 14866 14922 14922 14868 14924 14867 14867 14922 14867 14924 14924 14869 14925 14868 14868 14924 14868 14925 14925 14870 14926 14869 14869 14925 14869 14926 14926 14871 14927 14870 14870 14926 14870 14927 14927 14872 14928 14871 14871 14927 14871 14928 14928 14873 14929 14872 14872 14928 14872 14929 14929 14873 14898 14905 14905 14874 14898 14873 14873 14873 14905 14929 14929 14875 14898 14874 14874 14876:14877 \ + 14875 14875 14877 14889 14875 14875 14889 14898 14875 14875:14876 \ + 14801 14877 14877 14801 14787 14802 14802 14802 14877 14801 14801 14742 14640 14743 14743 14743 14787 14742 14742 14787 14743 14788 14788 14788 14802 14787 14787 14640 14604 14641 14641 14641 14743 14640 14640 14604 14441 14605 14605 14605 14641 14604 14604 14371 14248 14372 14372 14372 14419 14371 14371 14419 14372 14420 14420 14420 14441 14419 14419 14441 14420 14442 14442 14442 14605 14441 14441 14248 14223 14249 14249 14249 14372 14248 14248 14097:14098 \ + 14095 14095 14098 14097 14100 14100 14100 14223 14098 14098 14223 14100 14224 14224 14224 14249 14223 14223 14823 14717 14824 14824 14824 14863 14823 14823 14574 14534 14575 14575 14575 14667 14574 14574 14666 14574 14667 14667 14667 14717 14666 14666 14716 14666 14717 14717 14717 14823 14716 14716 14030:14031 \ + 14028 14028:14029 14028 14031 14031 14031 14180 14029 14029 14179 14029 14180 14180 14180 14307 14179 14179 14306 14179 14307 14307 14307 14492 14306 14306 14491 14306 14492 14492 14492 14534 14491 14491 14533 14491 14534 14534 14534 14574 14533 14533 14862 14823 14863 14863 14863 14921 14862 14862 14920 14862 14921 14921 14921 14948 14920 14920 14923 14948 14921 14921:14922 \ + 14948 14923 14923:14924 14949 14922 14922 14948 14922 14949 14949 14925 14950 14924 14924 14949 14924 14950 14950 14926 14951 14925 14925 14950 14925 14951 14951 14927 14952 14926 14926 14951 14926 14952 14952 14928 14953 14927 14927 14952 14927 14953 14953 14929 14953 14928 14928 14905 14954 14929 14929 14953 14929 14954 14954 14897 14905 14898 14898 14905 14897 14906 14906 14905:14906 \ + 14954 14954 14898 14889 14897 14897 14877 14802 14878 14878 14878 14889 14877 14877 14889 14878 14888 14888 14888 14897 14889 14889 14802 14788 14803 14803 14803 14878 14802 14802 14743 14641 14744 14744 14744 14788 14743 14743 14788 14744 14789 14789 14789 14803 14788 14788 14641 14605 14642 14642 14642 14744 14641 14641 14605 14442 14606 14606 14606 14642 14605 14605 14372 14249 14373 14373 14373 14420 14372 14372 14420 14373 14421 14421 14421 14442 14420 14420 14442 14421 14443 14443 14443 14606 14442 14442 14249 14224 14250 14250 14250 14373 14249 14249 14099:14100 \ + 14097 14097 14100 14099 14102 14102 14102 14224 14100 14100 14224 14102 14225 14225 14225 14250 14224 14224 14822 14716 14823 14823 14823 14862 14822 14822 14573 14533 14574 14574 14574 14666 14573 14573 14665 14573 14666 14666 14666 14716 14665 14665 14715 14665 14716 14716 14716 14822 14715 14715 14028:14029 \ + 14026 14026:14027 14026 14029 14029 14029 14179 14027 14027 14178 14027 14179 14179 14179 14306 14178 14178 14305 14178 14306 14306 14306 14491 14305 14305 14490 14305 14491 14491 14491 14533 14490 14490 14532 14490 14533 14533 14533 14573 14532 14532 14861 14822 14862 14862 14862 14920 14861 14861 14919 14861 14920 14920 14920 14947 14919 14919 14947 14920 14948 14948 14948 14962 14947 14947 14949 14962 14948 14948 14950 14963 14949 14949 14962 14949 14963 14963 14951 14964 14950 14950 14963 14950 14964 14964 14952 14965 14951 14951 14964 14951 14965 14965 14953 14966 14952 14952 14965 14952 14966 14966 14954 14967 14953 14953 14966 14953 14967 14967 14906 14968 14954 14954 14967 14954 14968 14968 14897 14888 14899 14899 14899 14906 14897 14897 14906 14899 14907 14907 14906:14907 \ + 14968 14968 14878 14803 14879 14879 14879 14888 14878 14878 14888 14879 14890 14890 14890 14899 14888 14888 14803 14789 14804 14804 14804 14879 14803 14803 14744 14642 14745 14745 14745 14789 14744 14744 14789 14745 14790 14790 14790 14804 14789 14789 14642 14606 14643 14643 14643 14745 14642 14642 14606 14443 14607 14607 14607 14643 14606 14606 14373 14250 14374 14374 14374 14421 14373 14373 14421 14374 14422 14422 14422 14443 14421 14421 14443 14422 14444 14444 14444 14607 14443 14443 14250 14225 14251 14251 14251 14374 14250 14250 14101:14102 \ + 14099 14099 14102 14101 14104 14104 14104 14225 14102 14102 14225 14104 14226 14226 14226 14251 14225 14225 14821 14715 14822 14822 14822 14861 14821 14821 14572 14532 14573 14573 14573 14665 14572 14572 14664 14572 14665 14665 14665 14715 14664 14664 14714 14664 14715 14715 14715 14821 14714 14714 14026:14027 \ + 14024 14024:14025 14024 14027 14027 14027 14178 14025 14025 14177 14025 14178 14178 14178 14305 14177 14177 14304 14177 14305 14305 14305 14490 14304 14304 14489 14304 14490 14490 14490 14532 14489 14489 14531 14489 14532 14532 14532 14572 14531 14531 14860 14821 14861 14861 14861 14919 14860 14860 14918 14860 14919 14919 14919 14946 14918 14918 14946 14919 14947 14947 14947 14962 14946 14946 14961 14946 14962 14962 14962 14975 14961 14961:14963 \ + 14975 14975 14963 14982 14975 14975 14964 14982 14963 14963 14965 14983 14964 14964 14982 14964 14983 14983 14966 14984 14965 14965 14983 14965 14984 14984 14967 14984 14966 14966 14968 15010 14967 14967 14984 14967 15010 15010 14907 15023 14968 14968 15010 14968 15023 15023 14899 14890 14900 14900 14900 14907 14899 14899 14907 14900 14908 14908 14907:14908 \ + 15023 15023 14879 14804 14880 14880 14880 14890 14879 14879 14890 14880 14891 14891 14891 14900 14890 14890 14804 14790 14805 14805 14805 14880 14804 14804 14745 14643 14746 14746 14746 14790 14745 14745 14790 14746 14791 14791 14791 14805 14790 14790 14643 14607 14644 14644 14644 14746 14643 14643 14607 14444 14608 14608 14608 14644 14607 14607 14374 14251 14375 14375 14375 14422 14374 14374 14422 14375 14423 14423 14423 14444 14422 14422 14444 14423 14445 14445 14445 14608 14444 14444 14251 14226 14252 14252 14252 14375 14251 14251 14103:14104 \ + 14101 14101 14104 14103 14106 14106 14106 14226 14104 14104 14226 14106 14227 14227 14227 14252 14226 14226 14820 14714 14821 14821 14821 14860 14820 14820 14571 14531 14572 14572 14572 14664 14571 14571 14663 14571 14664 14664 14664 14714 14663 14663 14713 14663 14714 14714 14714 14820 14713 14713 14024:14025 \ + 14022 14022:14023 14022 14025 14025 14025 14177 14023 14023 14176 14023 14177 14177 14177 14304 14176 14176 14303 14176 14304 14304 14304 14489 14303 14303 14488 14303 14489 14489 14489 14531 14488 14488 14530 14488 14531 14531 14531 14571 14530 14530 14859 14820 14860 14860 14860 14918 14859 14859 14917 14859 14918 14918 14918 14945 14917 14917 14945 14918 14946 14946 14946 14961 14945 14945 14960 14945 14961 14961 14961 14974 14960 14960 14974 14961 14975 14975 14975 14982 14974 14974 14981 14974 14982 14982 14982 14990 14981 14981:14983 \ + 14990 14990 14983 14997 14990 14990 14983:14984 14997 14997 14984 15003 14997 14997 14984 15010 15003 15003 15009 15003 15010 15010 15023 15025 15010 15010 15010 15025 15009 15009 14908 15025 15023 15023 14900 14891 14901 14901 14901 14908 14900 14900 14908 14901 14909 14909 14909 15025 14908 14908 14880 14805 14881 14881 14881 14891 14880 14880 14891 14881 14892 14892 14892 14901 14891 14891 14805 14791 14806 14806 14806 14881 14805 14805 14746 14644 14747 14747 14747 14791 14746 14746 14791 14747 14792 14792 14792 14806 14791 14791 14644 14608 14645 14645 14645 14747 14644 14644 14608 14445 14609 14609 14609 14645 14608 14608 14375 14252 14376 14376 14376 14423 14375 14375 14423 14376 14424 14424 14424 14445 14423 14423 14445 14424 14446 14446 14446 14609 14445 14445 14252 14227 14253 14253 14253 14376 14252 14252 14105:14106 \ + 14103 14103 14106 14105 14108 14108 14108 14227 14106 14106 14227 14108 14228 14228 14228 14253 14227 14227 14819 14713 14820 14820 14820 14859 14819 14819 14570 14530 14571 14571 14571 14663 14570 14570 14662 14570 14663 14663 14663 14713 14662 14662 14712 14662 14713 14713 14713 14819 14712 14712 14022:14023 \ + 14020 14020:14021 14020 14023 14023 14023 14176 14021 14021 14175 14021 14176 14176 14176 14303 14175 14175 14302 14175 14303 14303 14303 14488 14302 14302 14487 14302 14488 14488 14488 14530 14487 14487 14529 14487 14530 14530 14530 14570 14529 14529 14858 14819 14859 14859 14859 14917 14858 14858 14916 14858 14917 14917 14917 14944 14916 14916 14944 14917 14945 14945 14945 14960 14944 14944 14959 14944 14960 14960 14960 14973 14959 14959 14973 14960 14974 14974 14974 14981 14973 14973 14980 14973 14981 14981 14981 14989 14980 14980 14989 14981 14990 14990 14990 14996 14989 14989 14996 14990 14997 14997 14997 15003 14996 14996 14996 15003 14995 14995 15002 14995 15003 15003 15003 15008 15002 15002 15008 15003 15009 15009 15009 15015 15008 15008 15015 15009 15024 15024 15024 15009 15025 15025 15024:15025 \ + 14909 14909 14901 14892 14902 14902 14902 14909 14901 14901 14909 14902 14910 14910 15024 14909:14910 \ + 14910 14881 14806 14882 14882 14882 14892 14881 14881 14892 14882 14893 14893 14893 14902 14892 14892 14806 14792 14807 14807 14807 14882 14806 14806 14747 14645 14748 14748 14748 14792 14747 14747 14792 14748 14793 14793 14793 14807 14792 14792 14645 14609 14646 14646 14646 14748 14645 14645 14609 14446 14610 14610 14610 14646 14609 14609 14376 14253 14377 14377 14377 14424 14376 14376 14424 14377 14425 14425 14425 14446 14424 14424 14446 14425 14447 14447 14447 14610 14446 14446 14253 14228 14254 14254 14254 14377 14253 14253 14107:14108 \ + 14105 14105 14108 14107 14110 14110 14110 14228 14108 14108 14228 14110 14229 14229 14229 14254 14228 14228 14818 14712 14819 14819 14819 14858 14818 14818 14569 14529 14570 14570 14570 14662 14569 14569 14661 14569 14662 14662 14662 14712 14661 14661 14711 14661 14712 14712 14712 14818 14711 14711 14020:14021 \ + 14018 14018:14019 14018 14021 14021 14021 14175 14019 14019 14174 14019 14175 14175 14175 14302 14174 14174 14301 14174 14302 14302 14302 14487 14301 14301 14486 14301 14487 14487 14487 14529 14486 14486 14528 14486 14529 14529 14529 14569 14528 14528 14857 14818 14858 14858 14858 14916 14857 14857 14915 14857 14916 14916 14916 14943 14915 14915 14943 14916 14944 14944 14944 14959 14943 14943 14958 14943 14959 14959 14959 14972 14958 14958 14972 14959 14973 14973 14973 14980 14972 14972 14979 14972 14980 14980 14980 14988 14979 14979 14988 14980 14989 14989 14989 14995 14988 14988 14995 14989 14996 14996 14994 14988 14995 14995 14995 15002 14994 14994 15001 14994 15002 15002 15002 15007 15001 15001 15007 15002 15008 15008 15008 15014 15007 15007 15014 15008 15015 15015 15015 14910 15014 15014 14910 15015 15024 15024 14902 14893 14903 14903 14903 14910 14902 14902:14903 \ + 15019 14910 14910 15019 15014 14910 14910 14882 14807 14883 14883 14883 14893 14882 14882 14893 14883 14894 14894 14894 14903 14893 14893 14807 14793 14808 14808 14808 14883 14807 14807 14748 14646 14749 14749 14749 14793 14748 14748 14793 14749 14794 14794 14794 14808 14793 14793 14646 14610 14647 14647 14647 14749 14646 14646 14610 14447 14611 14611 14611 14647 14610 14610 14377 14254 14378 14378 14378 14425 14377 14377 14425 14378 14426 14426 14426 14447 14425 14425 14447 14426 14448 14448 14448 14611 14447 14447 14254 14229 14255 14255 14255 14378 14254 14254 14109:14110 \ + 14107 14107 14110 14109 14112 14112 14112 14229 14110 14110 14229 14112 14230 14230 14230 14255 14229 14229 14817 14711 14818 14818 14818 14857 14817 14817 14568 14528 14569 14569 14569 14661 14568 14568 14660 14568 14661 14661 14661 14711 14660 14660 14710 14660 14711 14711 14711 14817 14710 14710 14018:14019 \ + 14016 14016:14017 14016 14019 14019 14019 14174 14017 14017 14173 14017 14174 14174 14174 14301 14173 14173 14300 14173 14301 14301 14301 14486 14300 14300 14485 14300 14486 14486 14486 14528 14485 14485 14527 14485 14528 14528 14528 14568 14527 14527 14856 14817 14857 14857 14857 14915 14856 14856 14914 14856 14915 14915 14915 14942 14914 14914 14942 14915 14943 14943 14943 14958 14942 14942 14957 14942 14958 14958 14958 14971 14957 14957 14971 14958 14972 14972 14972 14979 14971 14971 14978 14971 14979 14979 14979 14987 14978 14978 14987 14979 14988 14988 14988 14994 14987 14987 14993 14987 14994 14994 14994 15001 14993 14993 15000 14993 15001 15001 15001 15006 15000 15000 15006 15001 15007 15007 15007 15013 15006 15006 15013 15007 15014 15014 15014 15019 15013 15013 14903 14894 14904 14904 14904 15019 14903 14903 15018 15013 15019 15019 15018:15019 \ + 14904 14904 14883 14808 14884 14884 14884 14894 14883 14883 14894 14884 14895 14895 14895 14904 14894 14894 14808 14794 14809 14809 14809 14884 14808 14808 14749 14647 14750 14750 14750 14794 14749 14749 14794 14750 14795 14795 14795 14809 14794 14794 14647 14611 14648 14648 14648 14750 14647 14647 14611 14448 14612 14612 14612 14648 14611 14611 14378 14255 14379 14379 14379 14426 14378 14378 14426 14379 14427 14427 14427 14448 14426 14426 14448 14427 14449 14449 14449 14612 14448 14448 14255 14230 14256 14256 14256 14379 14255 14255 14111:14112 \ + 14109 14109 14112 14111 14114 14114 14114 14230 14112 14112 14230 14114 14231 14231 14231 14256 14230 14230 14816 14710 14817 14817 14817 14856 14816 14816 14567 14527 14568 14568 14568 14660 14567 14567 14659 14567 14660 14660 14660 14710 14659 14659 14709 14659 14710 14710 14710 14816 14709 14709 14016:14017 \ + 14014 14014:14015 14014 14017 14017 14017 14173 14015 14015 14172 14015 14173 14173 14173 14300 14172 14172 14299 14172 14300 14300 14300 14485 14299 14299 14484 14299 14485 14485 14485 14527 14484 14484 14526 14484 14527 14527 14527 14567 14526 14526 14855 14816 14856 14856 14856 14914 14855 14855 14913 14855 14914 14914 14914 14941 14913 14913 14941 14914 14942 14942 14942 14957 14941 14941 14955 14941 14957 14957 14957 14970 14955 14955 14970 14957 14971 14971 14971 14978 14970 14970 14976 14970 14978 14978 14978 14986 14976 14976 14986 14978 14987 14987 14987 14993 14986 14986 14991 14986 14993 14993 14993 15000 14991 14991 14998 14991 15000 15000 15000 15005 14998 14998 15005 15000 15006 15006 15006 15011 15005 15005 15011 15006 15013 15013 15013 15018 15011 15011 14895 15022 14904 14904 15018 14904 15022 15022 15016 15011 15018 15018 15018 15022 15016 15016 14884 14809 14885 14885 14885 14895 14884 14884 14895 14885 14896 14896 15022 14895 15020 15020 14896 15020 14895 14895 14809 14795 14810 14810 14810 14885 14809 14809 14750 14648 14751 14751 14751 14795 14750 14750 14795 14751 14796 14796 14796 14810 14795 14795 14648 14612 14649 14649 14649 14751 14648 14648 14612 14449 14613 14613 14613 14649 14612 14612 14379 14256 14380 14380 14380 14427 14379 14379 14427 14380 14428 14428 14428 14449 14427 14427 14449 14428 14450 14450 14450 14613 14449 14449 14256 14231 14257 14257 14257 14380 14256 14256 14113:14114 \ + 14111 14111 14114 14113 14116 14116 14116 14231 14114 14114 14231 14116 14232 14232 14232 14257 14231 14231 14815 14709 14816 14816 14816 14855 14815 14815 14566 14526 14567 14567 14567 14659 14566 14566 14658 14566 14659 14659 14659 14709 14658 14658 14708 14658 14709 14709 14709 14815 14708 14708 14014:14015 \ + 14012 14012:14013 14012 14015 14015 14015 14172 14013 14013 14171 14013 14172 14172 14172 14299 14171 14171 14298 14171 14299 14299 14299 14484 14298 14298 14483 14298 14484 14484 14484 14526 14483 14483 14525 14483 14526 14526 14526 14566 14525 14525 14854 14815 14855 14855 14855 14913 14854 14854 14911 14854 14913 14913 14913 14940 14911 14911 14940 14913 14941 14941 14941 14955 14940 14940 14956 14940 14955 14955 14955 14969 14956 14956 14969 14955 14970 14970 14970 14976 14969 14969 14977 14969 14976 14976 14976 14985 14977 14977 14985 14976 14986 14986 14986 14991 14985 14985 14992 14985 14991 14991 14991 14998 14992 14992 14999 14992 14998 14998 14998 15004 14999 14999 15004 14998 15005 15005 15005 15011 15004 15004 15012 15004 15011 15011 15011 15016 15012 15012 15020 15016 15022 15022 15017 15012 15016 15016 15016 15020 15017 15017 14885 14810 14886 14886 14886 14896 14885 14885 15020 14896 15021 15021 14887 15021 14896 14896 14887 14896 14886 14886 15021 15017 15020 15020 14810 14796 14811 14811 14811 14886 14810 14810 14751 14649 14752 14752 14752 14796 14751 14751 14796 14752 14797 14797 14797 14811 14796 14796 14649 14613 14650 14650 14650 14752 14649 14649 14613 14450 14614 14614 14614 14650 14613 14613 14380 14257 14381 14381 14381 14428 14380 14380 14428 14381 14429 14429 14429 14450 14428 14428 14450 14429 14451 14451 14451 14614 14450 14450 14257 14232 14258 14258 14258 14381 14257 14257 14115:14116 \ + 14113 14113 14116 14115 14118 14118 14118 14232 14116 14116 14232 14118 14233 14233 14233 14258 14232 14232 14813 14708 14815 14815 14815 14854 14813 14813 14565 14525 14566 14566 14566 14658 14565 14565 14657 14565 14658 14658 14658 14708 14657 14657 14707 14657 14708 14708 14708 14813 14707 14707 14012:14013 \ + 14010 14010:14011 14010 14013 14013 14013 14171 14011 14011 14170 14011 14171 14171 14171 14298 14170 14170 14297 14170 14298 14298 14298 14483 14297 14297 14482 14297 14483 14483 14483 14525 14482 14482 14524 14482 14525 14525 14525 14565 14524 14524 14853 14813 14854 14854 14854 14911 14853 14853 14912 14853 14911 14911 14939 14911 14940 14940 14912 14911 14939 14939:14940 \ + 14956 14939 14939 14939 14956 14938 14938 14937 14956 14969 14969 14938 14956 14937 14937 14969 14977 14937 14937 14937 14977 14936 14936 14977 14985 14936 14936 14936 14985 14935 14935 14985 14992 14935 14935 14935 14992 14934 14934 14992 14999 14934 14934 14934 14999 14933 14933 14999 15004 14933 14933 14933 15004 14932 14932 15004 15012 14932 14932 15012 15017 14932 14932 14932 15017 14930 14930 15017 15021 14930 14930 14886 14811 14887 14887 14930 15021 14931 14931 15021 14887 14931 14931 14812 14887 14811 14811:14812 \ + 14756 14887 14887 14757 14887 14756 14756:14757 14931 14887 14887 14811 14797 14812 14812 14752 14650 14753 14753 14753 14797 14752 14752 14798 14797 14753 14753 14798 14812 14797 14797 14650 14614 14651 14651 14651 14753 14650 14650 14614 14451 14615 14615 14615 14651 14614 14614 14381 14258 14382 14382 14382 14429 14381 14381 14429 14382 14430 14430 14430 14451 14429 14429 14451 14430 14452 14452 14452 14615 14451 14451 14258 14233 14259 14259 14259 14382 14258 14258 14117:14118 \ + 14115 14115 14118 14117 14120 14120 14120 14233 14118 14118 14233 14120 14234 14234 14234 14259 14233 14233 14814 14707 14813 14813 14813 14853 14814 14814 14564 14524 14565 14565 14565 14657 14564 14564 14656 14564 14657 14657 14657 14707 14656 14656 14706 14656 14707 14707 14707 14814 14706 14706 14010:14011 \ + 14008 14008:14009 14008 14011 14011 14011 14170 14009 14009 14169 14009 14170 14170 14170 14297 14169 14169 14296 14169 14297 14297 14297 14482 14296 14296 14481 14296 14482 14482 14482 14524 14481 14481 14523 14481 14524 14524 14524 14564 14523 14523 14768 14814 14853 14853 14853 14912 14768 14768 14768 14912 14767 14767 14767 14912 14939 14939 14767 14939 14766 14766 14938 14766 14939 14939 14766 14938 14765 14765 14937 14765 14938 14938 14765 14937 14764 14764 14936 14764 14937 14937 14764 14936 14763 14763 14935 14763 14936 14936 14763 14935 14762 14762 14934 14762 14935 14935 14762 14934 14761 14761 14933 14761 14934 14934 14761 14933 14760 14760 14932 14760 14933 14933 14760 14932 14759 14759 14930 14759 14932 14932 14759 14930 14758 14758 14931 14758 14930 14930 14758 14931 14757 14757 14798 14755 14812 14812 14756 14812 14755 14755 14692 14756 14691 14691 14755 14691 14756 14756 14756 14692 14757 14757 14693 14757 14692 14692 14757 14693 14758 14758 14753 14651 14754 14754 14798 14753:14754 \ + 14754 14754:14755 14798 14798 14651 14615 14652 14652 14652 14754 14651 14651 14615 14452 14616 14616 14616 14652 14615 14615 14382 14259 14383 14383 14383 14430 14382 14382 14430 14383 14431 14431 14431 14452 14430 14430 14452 14431 14453 14453 14453 14616 14452 14452 14259 14234 14260 14260 14260 14383 14259 14259 14119:14120 \ + 14117 14117 14120 14119 14122 14122 14122 14234 14120 14120 14234 14122 14235 14235 14235 14260 14234 14234 14706 14814 14769 14769 14769 14814 14768 14768 14563 14523 14564 14564 14564 14656 14563 14563 14655 14563 14656 14656 14656 14706 14655 14655 14705 14655 14706 14706 14705:14706 \ + 14769 14769 14008:14009 14006 14006:14007 14006 14009 14009 14009 14169 14007 14007 14168 14007 14169 14169 14169 14296 14168 14168 14295 14168 14296 14296 14296 14481 14295 14295 14480 14295 14481 14481 14481 14523 14480 14480 14522 14480 14523 14523 14523 14563 14522 14522 14704 14768 14703 14703 14767 14703 14768 14768 14768 14704 14769 14769 14703 14767 14702 14702 14766 14702 14767 14767 14702 14766 14701 14701 14765 14701 14766 14766 14701 14765 14700 14700 14764 14700 14765 14765 14700 14764 14699 14699 14763 14699 14764 14764 14699 14763 14698 14698 14762 14698 14763 14763 14698 14762 14697 14697 14761 14697 14762 14762 14697 14761 14696 14696 14760 14696 14761 14761 14696 14760 14695 14695 14759 14695 14760 14760 14695 14759 14694 14694 14758 14694 14759 14759 14694 14758 14693 14693 14691 14755 14689 14689 14754 14689 14755 14755 14674 14691 14672 14672 14689 14672 14691 14691 14691 14674 14692 14692 14675 14692 14674 14674 14692 14675 14693 14693 14676 14693 14675 14675 14693 14676 14694 14694 14652 14690 14754 14754 14690 14689 14754 14754 14652 14616 14653 14653 14653 14690 14652 14652 14616 14453 14617 14617 14617 14653 14616 14616 14383 14260 14384 14384 14384 14431 14383 14383 14431 14384 14432 14432 14432 14453 14431 14431:14432 \ + 14499 14453 14453 14499 14617 14453 14453 14260 14235 14261 14261 14261 14384 14260 14260 14121:14122 \ + 14119 14119 14122 14121 14124 14124 14124 14235 14122 14122 14235 14124 14236 14236 14236 14261 14235 14235 14705 14769 14704 14704 14562 14522 14563 14563 14563 14655 14562 14562 14654 14562 14655 14655 14655 14705 14654 14654 14688 14705 14687 14687 14704 14687 14705 14705 14654 14705 14688 14688 14006:14007 \ + 14004 14004:14005 14004 14007 14007 14007 14168 14005 14005 14167 14005 14168 14168 14168 14295 14167 14167 14294 14167 14295 14295 14295 14480 14294 14294 14479 14294 14480 14480 14480 14522 14479 14479 14521 14479 14522 14522 14522 14562 14521 14521 14686 14703 14685 14685 14702 14685 14703 14703 14703 14686 14704 14704 14687 14704 14686 14686 14685 14702 14684 14684 14701 14684 14702 14702 14684 14701 14683 14683 14700 14683 14701 14701 14683 14700 14682 14682 14699 14682 14700 14700 14682 14699 14681 14681 14698 14681 14699 14699 14681 14698 14680 14680 14697 14680 14698 14698 14680 14697 14679 14679 14696 14679 14697 14697 14679 14696 14678 14678 14695 14678 14696 14696 14678 14695 14677 14677 14694 14677 14695 14695 14677 14694 14676 14676 14672 14689 14673 14673 14690 14673 14689 14689 14620 14672 14619 14619 14673 14619 14672 14672 14672 14620 14674 14674 14621 14674 14620 14620 14674 14621 14675 14675 14622 14675 14621 14621 14675 14622 14676 14676 14623 14676 14622 14622 14676 14623 14677 14677 14673 14690 14653 14653 14617:14618 \ + 14653 14653 14618 14673 14653 14653 14498 14617 14499 14499:14500 \ + 14617 14498 14498 14617 14500 14618 14618 14384 14261 14385 14385 14385 14432 14384 14384 14432 14385 14433 14433 14433 14499 14432 14432 14499 14433 14498 14498 14261 14236 14262 14262 14262 14385 14261 14261 14123:14124 \ + 14121 14121 14124 14123 14126 14126 14126 14236 14124 14124 14236 14126 14237 14237 14237 14262 14236 14236 14560 14521 14562 14562 14562 14654 14560 14560 14635 14560 14654 14654 14635 14654 14688 14688 14634 14687 14633 14633 14686 14633 14687 14687 14687 14634 14688 14688 14635 14688 14634 14634 14004:14005 \ + 14002 14002:14003 14002 14005 14005 14005 14167 14003 14003 14166 14003 14167 14167 14167 14294 14166 14166 14293 14166 14294 14294 14294 14479 14293 14293 14478 14293 14479 14479 14479 14521 14478 14478 14520 14478 14521 14521 14521 14560 14520 14520 14632 14685 14631 14631 14684 14631 14685 14685 14685 14632 14686 14686 14633 14686 14632 14632 14631 14684 14630 14630 14683 14630 14684 14684 14630 14683 14629 14629 14682 14629 14683 14683 14629 14682 14628 14628 14681 14628 14682 14682 14628 14681 14627 14627 14680 14627 14681 14681 14627 14680 14626 14626 14679 14626 14680 14680 14626 14679 14625 14625 14678 14625 14679 14679 14625 14678 14624 14624 14677 14624 14678 14678 14624 14677 14623 14623 14619 14673 14618 14618 14502 14619 14501 14501 14618 14501 14619 14619 14619 14502 14620 14620 14503 14620 14502 14502 14620 14503 14621 14621 14504 14621 14503 14503 14621 14504 14622 14622 14505 14622 14504 14504 14622 14505 14623 14623 14506 14623 14505 14505 14623 14506 14624 14624 14501 14618 14500 14500 14388 14498 14433 14433 14390 14498 14388 14388 14498 14390 14500 14500 14391 14500 14390 14390 14500 14391 14501 14501 14385 14262 14386 14386 14386 14433 14385 14385:14386 \ + 14389 14433 14433 14388 14433 14389 14389 14262 14237 14263 14263 14263 14386 14262 14262 14125:14126 \ + 14123 14123 14126 14125 14128 14128 14128 14237 14126 14126 14237 14128 14238 14238 14238 14263 14237 14237 14561 14520 14560 14560:14561 \ + 14560 14635 14635 14518 14635 14517 14517 14634 14517 14635 14635 14518 14561 14635 14635 14516 14633 14515 14515 14632 14515 14633 14633 14633 14516 14634 14634 14517 14634 14516 14516 14002:14003 \ + 14000 14000:14001 14000 14003 14003 14003 14166 14001 14001 14165 14001 14166 14166 14166 14293 14165 14165 14292 14165 14293 14293 14293 14478 14292 14292 14476 14292 14478 14478 14478 14520 14476 14476 14519 14476 14520 14520 14520 14561 14519 14519 14514 14631 14513 14513 14630 14513 14631 14631 14631 14514 14632 14632 14515 14632 14514 14514 14513 14630 14512 14512 14629 14512 14630 14630 14512 14629 14511 14511 14628 14511 14629 14629 14511 14628 14510 14510 14627 14510 14628 14628 14510 14627 14509 14509 14626 14509 14627 14627 14509 14626 14508 14508 14625 14508 14626 14626 14508 14625 14507 14507 14624 14507 14625 14625 14507 14624 14506 14506 14393 14502 14392 14392 14501 14392 14502 14502 14502 14393 14503 14503 14394 14503 14393 14393 14503 14394 14504 14504 14395 14504 14394 14394 14504 14395 14505 14505 14396 14505 14395 14395 14505 14396 14506 14506 14392 14501 14391 14391 14397 14506 14396 14396 14506 14397 14507 14507 14267 14388 14265 14265 14389 14265 14388 14388 14388 14267 14390 14390 14268 14390 14267 14267 14390 14268 14391 14391 14269 14391 14268 14268 14391 14269 14392 14392 14386 14263 14387 14387 14387 14389 14386 14386 14265 14389 14266 14266 14266 14389 14387 14387 14263 14238 14264 14264 14264 14387 14263 14263 14127:14128 \ + 14125 14125 14128 14127 14130 14130 14130 14238 14128 14128 14130 14135 14238 14238 14135 14264 14238 14238 14519 14561 14518 14518 14408 14517 14407 14407 14516 14407 14517 14517 14517 14408 14518 14518 14409 14518 14408 14408 14518 14409 14519 14519 14406 14515 14405 14405 14514 14405 14515 14515 14515 14406 14516 14516 14407 14516 14406 14406 14000:14001 \ + 13998 13998:13999 13998 14001 14001 14001 14165 13999 13999 14164 13999 14165 14165 14165 14292 14164 14164 14290 14164 14292 14292 14292 14476 14290 14290 14477 14290 14476 14476 14476 14519 14477 14477 14410 14519 14409 14409 14477 14519 14410 14410 14405 14514 14404 14404 14513 14404 14514 14514 14404 14513 14403 14403 14512 14403 14513 14513 14403 14512 14402 14402 14511 14402 14512 14512 14402 14511 14401 14401 14510 14401 14511 14511 14401 14510 14400 14400 14509 14400 14510 14510 14400 14509 14399 14399 14508 14399 14509 14509 14399 14508 14398 14398 14507 14398 14508 14508 14398 14507 14397 14397 14271 14393 14270 14270 14392 14270 14393 14393 14393 14271 14394 14394 14272 14394 14271 14271 14394 14272 14395 14395 14273 14395 14272 14272 14395 14273 14396 14396 14274 14396 14273 14273 14396 14274 14397 14397 14270 14392 14269 14269 14275 14397 14274 14274 14397 14275 14398 14398 14138 14265 14137 14137 14266 14137 14265 14265 14265 14138 14267 14267 14139 14267 14138 14138 14267 14139 14268 14268 14140 14268 14139 14139 14268 14140 14269 14269 14141 14269 14140 14140 14269 14141 14270 14270 14264 14266 14387 14387 14137 14266 14136 14136 14136 14266 14264 14264 14135:14136 \ + 14264 14264 14129:14130 14127 14127 14130 14129 14132 14132 14132 14135 14130 14130 13933 14135 14132 14132 13932 14135 13933 13933 14135 13932 14136 14136 14285 14407 14284 14284 14406 14284 14407 14407 14407 14285 14408 14408 14286 14408 14285 14285 14408 14286 14409 14409 14287 14409 14286 14286 14409 14287 14410 14410 14284 14406 14283 14283 14405 14283 14406 14406 14283 14405 14282 14282 14404 14282 14405 14405 13998:13999 \ + 13996 13996:13997 13996 13999 13999 13999 14164 13997 13997 14163 13997 14164 14164 14164 14290 14163 14163 14291 14163 14290 14290 14290 14477 14291 14291 14291 14477 14411 14411 14411 14477 14410 14410 14288 14410 14287 14287 14410 14288 14411 14411 14282 14404 14281 14281 14403 14281 14404 14404 14281 14403 14280 14280 14402 14280 14403 14403 14280 14402 14279 14279 14401 14279 14402 14402 14279 14401 14278 14278 14400 14278 14401 14401 14278 14400 14277 14277 14399 14277 14400 14400 14277 14399 14276 14276 14398 14276 14399 14399 14276 14398 14275 14275 14143 14271 14142 14142 14270 14142 14271 14271 14271 14143 14272 14272 14144 14272 14143 14143 14272 14144 14273 14273 14145 14273 14144 14144 14273 14145 14274 14274 14146 14274 14145 14145 14274 14146 14275 14275 14142 14270 14141 14141 14147 14275 14146 14146 14275 14147 14276 14276 13937 14137 13935 13935 14136 13935 14137 14137 14137 13937 14138 14138 13939 14138 13937 13937 14138 13939 14139 14139 13941 14139 13939 13939 14139 13941 14140 14140 13943 14140 13941 13941 14140 13943 14141 14141 13945 14141 13943 13943 14141 13945 14142 14142 13935 14136 13932 13932 14131:14132 \ + 14129 14129 14132 14131 14134 14134 14134 13933 14132 14132 13933 13930 13932 13932 13930 13933 13988 13988 13988 13933 14134 14134 13931:13932 \ + 13930 13930 13932 13931 13935 13935 14156 14284 14155 14155 14283 14155 14284 14284 14284 14156 14285 14285 14157 14285 14156 14156 14285 14157 14286 14286 14158 14286 14157 14157 14286 14158 14287 14287 14159 14287 14158 14158 14287 14159 14288 14288 14155 14283 14154 14154 14282 14154 14283 14283 14154 14282 14153 14153 14281 14153 14282 14282 13996:13997 \ + 13994 13994:13995 13994 13997 13997 13997 14163 13995 13995 14162 13995 14163 14163 14163 14291 14162 14162 14162 14291 14289 14289 14289 14291 14411 14411 14289 14411 14288 14288 14160 14288 14159 14159 14288 14160 14289 14289 14153 14281 14152 14152 14280 14152 14281 14281 14152 14280 14151 14151 14279 14151 14280 14280 14151 14279 14150 14150 14278 14150 14279 14279 14150 14278 14149 14149 14277 14149 14278 14278 14149 14277 14148 14148 14276 14148 14277 14277 14148 14276 14147 14147 13949 14143 13947 13947 14142 13947 14143 14143 14143 13949 14144 14144 13951 14144 13949 13949 14144 13951 14145 14145 13953 14145 13951 13951 14145 13953 14146 14146 13955 14146 13953 13953 14146 13955 14147 14147 13947 14142 13945 13945 13957 14147 13955 13955 14147 13957 14148 14148 13934:13935 \ + 13931 13931 13935 13934 13937 13937 13936:13937 13934 13934 13937 13936 13939 13939 13938:13939 \ + 13936 13936 13939 13938 13941 13941 13940:13941 13938 13938 13941 13940 13943 13943 13942:13943 \ + 13940 13940 13943 13942 13945 13945 13944:13945 13942 13942 13945 13944 13947 13947 14133:14134 \ + 14131 14131 14133 13988 14134 14134 13975 14156 13973 13973 14155 13973 14156 14156 14156 13975 14157 14157 13977 14157 13975 13975 14157 13977 14158 14158 13979 14158 13977 13977 14158 13979 14159 14159 13981 14159 13979 13979 14159 13981 14160 14160 13973 14155 13971 13971 14154 13971 14155 14155 13971 14154 13969 13969 14153 13969 14154 14154 13969 14153 13967 13967 14152 13967 14153 14153 13994:13995 \ + 13991 13991:13992 13991 13995 13995 13995 14162 13992 13992 14161 13992 14162 14162 14161:14162 \ + 14289 14289 14161 14289 14160 14160 13983 14160 13981 13981 14160 13983 14161 14161 13967 14152 13965 13965 14151 13965 14152 14152 13965 14151 13963 13963 14150 13963 14151 14151 13963 14150 13961 13961 14149 13961 14150 14150 13961 14149 13959 13959 14148 13959 14149 14149 13959 14148 13957 13957 13948:13949 \ + 13946 13946:13947 13946 13949 13949 13949 13948 13951 13951 13950:13951 \ + 13948 13948 13951 13950 13953 13953 13952:13953 13950 13950 13953 13952 13955 13955 13954:13955 \ + 13952 13952 13955 13954 13957 13957 13946:13947 13944 13944 13956:13957 \ + 13954 13954 13957 13956 13959 13959 13974:13975 13972 13972:13973 \ + 13972 13975 13975 13975 13974 13977 13977 13976:13977 \ + 13974 13974 13977 13976 13979 13979 13978:13979 13976 13976 13979 13978 13981 13981 13980:13981 \ + 13978 13978 13981 13980 13983 13983 13972:13973 13970 13970:13971 \ + 13970 13973 13973 13970:13971 13968 13968:13969 13968 13971 13971 13968:13969 \ + 13966 13966:13967 13966 13969 13969 13966:13967 13964 13964:13965 \ + 13964 13967 13967 13991:13992 13990 13990 13993 13990 13992 13992 13992 14161 13993 13993 13985 14161 13983 13983 13993 14161 13985 13985 13982:13983 \ + 13980 13980 13983 13982 13985 13985 13964:13965 13962 13962:13963 \ + 13962 13965 13965 13962:13963 13960 13960:13961 13960 13963 13963 13960:13961 \ + 13958 13958:13959 13958 13961 13961 13958:13959 13956 13956 13990 13993 13989 13989 13989 13993 13987 13987 13987 13993 13985 13985 13984:13985 \ + 13982 13982 13985 13984 13987 13987 13986 13989 13987 13987 13986:13987 \ + 13984 13984 13870 13912 13868 13868 13872 13911 13870 13870 13912 13870 13911 13911 13874 13910 13872 13872 13911 13872 13910 13910 13868 13913 13866 13866 13913 13868 13912 13912 13866 13914 13864 13864 13914 13866 13913 13913 13876 13909 13874 13874 13910 13874 13909 13909 13878 13908 13876 13876 13909 13876 13908 13908 13880 13907 13878 13878 13908 13878 13907 13907 13882 13906 13880 13880 13907 13880 13906 13906 13884 13905 13882 13882 13906 13882 13905 13905 13886 13904 13884 13884 13905 13884 13904 13904 13888 13903 13886 13886 13904 13886 13903 13903 13864 13915 13862 13862 13915 13864 13914 13914 13860 13917 13858 13858 13862 13916 13860 13860 13917 13860 13916 13916 13916 13862 13915 13915 13858 13918 13856 13856 13918 13858 13917 13917 13856 13919 13854 13854 13919 13856 13918 13918 13890 13902 13888 13888 13903 13888 13902 13902 13854 13920 13852 13852 13920 13854 13919 13919 13852 13921 13850 13850 13921 13852 13920 13920 13850 13922 13848 13848 13922 13850 13921 13921 13892 13901 13890 13890 13902 13890 13901 13901 13848 13923 13846 13846 13923 13848 13922 13922 13894 13899 13892 13892 13892 13899 13901 13901 13846 13924 13844 13844 13924 13846 13923 13923 13844 13925 13842 13842 13925 13844 13924 13924 13895 13899 13894 13894 13896 13899 13895 13895 13842 13929 13840 13840 13929 13842 13925 13925 13925:13926 \ + 13929 13929 13840 13928 13838 13838 13928 13840 13929 13929 13929 13926 13928 13928 13928 13926:13927 \ + 13927 13838 13927 13833 13833 13927 13838 13928 13928 13833 13927 13834 13834 13832:13833 \ + 13831 13831 13834 13831 13833 13833 " ) +VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) +VCmd.Accept( var7 ) +VCmd.SetIntValue( var1, r"Visible Selection", 1 ) +VCmd.Cancel( var7 ) +VCmd.Quit( var7 ) +#__________________ UserDefineRegionChild END __________________ +VCmd.Accept( var5 ) +VCmd.Quit( var5 ) +#__________________ BoundaryConditions END __________________ +VExpMngr.ExportFile( VdbFilePath, 0 ) +ret=VE.ModelDestroy( "M @0" ) +VE.SetCurrentPage( 1 ) +VE.SetActiveWindow( r"p1w1" ) VE.NewSession( ) \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/utils/24_CuringWriteSolverInput.py b/PHASES/AUTOMATION_ML/utils/24_CuringWriteSolverInput.py index f16f04e..c56e310 100644 --- a/PHASES/AUTOMATION_ML/utils/24_CuringWriteSolverInput.py +++ b/PHASES/AUTOMATION_ML/utils/24_CuringWriteSolverInput.py @@ -1,90 +1,90 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Feb 2 16:15:32 2023 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Fri Jan 20 12:10:21 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -import os -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) - - -print(100*'-') -print('Curing write solver 24') - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -line_no = 0 -incfile= open(VariablesList, "r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbCuringFilePath' in line: - linesplit = line.partition('= ') - VdbFilePath = linesplit[2] - if 'outputs_files_folder' in line: - linesplit = line.partition('= ') - new_working_directory = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) -#__________________ SolverManager BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) -VCmd.Quit( var4 ) -#__________________ SolverManager END __________________ -VExpMngr.ExportFile( VdbFilePath, 0 ) -#__________________ SolverManager BEGIN __________________ -var5=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) -ret=VCmd.ExecuteCommand( var5, r"RunDataCAST" ) -VCmd.Quit( var5 ) -#__________________ SolverManager END __________________ -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Feb 2 16:15:32 2023 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Fri Jan 20 12:10:21 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +import os +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) + + +print(100*'-') +print('Curing write solver 24') + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +line_no = 0 +incfile= open(VariablesList, "r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbCuringFilePath' in line: + linesplit = line.partition('= ') + VdbFilePath = linesplit[2] + if 'outputs_files_folder' in line: + linesplit = line.partition('= ') + new_working_directory = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) +#__________________ SolverManager BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) +VCmd.Quit( var4 ) +#__________________ SolverManager END __________________ +VExpMngr.ExportFile( VdbFilePath, 0 ) +#__________________ SolverManager BEGIN __________________ +var5=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) +ret=VCmd.ExecuteCommand( var5, r"RunDataCAST" ) +VCmd.Quit( var5 ) +#__________________ SolverManager END __________________ +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/31_DistortionPreparingModel.py b/PHASES/AUTOMATION_ML/utils/31_DistortionPreparingModel.py index 5df14e0..a072faa 100644 --- a/PHASES/AUTOMATION_ML/utils/31_DistortionPreparingModel.py +++ b/PHASES/AUTOMATION_ML/utils/31_DistortionPreparingModel.py @@ -1,216 +1,216 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.5 -# Date : Fri Mar 31 16:36:46 2023 -#------------------------------------------------------------------------------- -import os - -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -VE.SetCurrentPage( 1 ) -VExpMngr.SetFilesOfType( r"All" ) - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -print(100*'_') -print('DISTORTION, preparing model. p31') -print('Reading list of variables') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbCuringFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbCuringFilePath = linesplit[2] - print('vdb curing file found') - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - -ret=VE.ChangeContext( r"Visual-RTM" ) -ret=VExpMngr.LoadFile( VdbCuringFilePath, 0 ) - -lst1_count,lst1 = VScn.List( " P 10001:10004 " ) -VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) -lst1_count,lst1 = VScn.List( " P 10000 " ) -VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var1, r"ShowSelected" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -#__________________ SimulationControl BEGIN __________________ -var6=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) -VCmd.SetObjectValue( var6, r"CurrentModel", "M @0" ) -VE.SetActiveWindow( r"p1w1" ) -VCmd.Quit( var6 ) -#__________________ SimulationControl END __________________ -#__________________ CompositeLayerDesignManager BEGIN __________________ -var7=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) -VCmd.SetIntValue( var7, r"Part2D3DOption", 3 ) -VCmd.SetGuStringValue( var7, r"LayerLaminateListFlag", r"LaminateList" ) -VCmd.SetGuStringValue( var7, r"SuppressMaterialNames", r"LAMINATE_6 LAMINATE_3 LAMINATE_4 LAMINATE_5" ) -VCmd.SetIntValue( var7, r"Part2D3DOption", 2 ) -VCmd.Quit( var7 ) -#__________________ CompositeLayerDesignManager END __________________ -ret=VE.ChangeContext( r"Visual-Mesh" ) -ret=VE.ChangeSkin( r"General" ) -VE.SetActiveWindow( r"p1w1" ) -VCmd.SetStringValue( var1, r"TargetName", r"Element" ) -lst1_count,lst1 = VScn.List( " T 1921:6432 " ) -VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count , lst1 ) -ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) -var9=VCmdGui.Create( r"VModelValidate.VCommandEleGeom" ) -VCmdGui.SetIntValue( var9, r"QualParaType", 2 ) -VCmdGui.SetIntValue( var9, r"ElemGeomGuiType", 1 ) -VCmdGui.Activate( var9, 0 ) -VCmdGui.SetIntValue( var9, r"QualParaType", 1 ) -lst1_count,lst1 = VScn.StringList( r" 1 | 2.000000 | 1 | 4.000000 | 1 | 2.000000 | 1 | 2.000000 " ) -VCmdGui.SetStringArrayValue( var9, r"1DParameterInfo", lst1_count, lst1 ) -VCmdGui.SetIntValue( var9, r"QualParaType", 2 ) -lst1_count,lst1 = VScn.StringList( r" 1 | 8.000000 | 1 | 30.000000 | 1 | 4.000000 | 1 | 45.000000 | 1 | 135.000000 | 1 | 30.000000 | 1 | 120.000000 | 1 | 8.000000 | 1 | 0.700000 | 1 | 45.000000 | 1 | 0.700000 | 1 | 8.000000 | 0 | 0.001000 " ) -VCmdGui.SetStringArrayValue( var9, r"2DParameterInfo", lst1_count, lst1 ) -VCmdGui.SetIntValue( var9, r"QualParaType", 3 ) -lst1_count,lst1 = VScn.StringList( r" 1 | 8.000000 | 1 | 30.000000 | 1 | 8.000000 | 1 | 45.000000 | 1 | 135.000000 | 1 | 30.000000 | 1 | 120.000000 | 1 | 8.000000 | 1 | 0.700000 | 1 | 45.000000 | 1 | 0.700000 | 1 | 0.500000 | 1 | 8.000000 | 1 | 0.500000 | 1 | 8.000000 | 0 | 0.001000 " ) -VCmdGui.SetStringArrayValue( var9, r"3DParameterInfo", lst1_count, lst1 ) -VCmdGui.Quit( var9 ) -#__________________ TopologyMesh BEGIN __________________ -var13=VCmd.Activate( 1, r"VMeshModeler.VmmICommandGui", r"TopologyMesh" ) -VCmd.SetObjectValue( var13, r"CurrentModel", "M @0" ) -VCmd.SetIntValue( var13, r"MeshType", 1 ) -ret=VCmd.ExecuteCommand( var13, r"MeshAllFaces" ) -VCmd.Cancel( var13 ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -#__________________ SimulationControl BEGIN __________________ -var14=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) -VCmd.SetObjectValue( var14, r"CurrentModel", "M @0" ) -VE.SetActiveWindow( r"p1w1" ) -VCmd.Quit( var14 ) -#__________________ SimulationControl END __________________ -#__________________ CompositeLayerDesignManager BEGIN __________________ -var15=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) -VCmd.SetIntValue( var15, r"Part2D3DOption", 3 ) -VCmd.SetIntValue( var15, r"Part2D3DOption", 2 ) -VCmd.Quit( var15 ) -#__________________ CompositeLayerDesignManager END __________________ -#__________________ LaminateMesh BEGIN __________________ -var16=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"LaminateMesh" ) -VCmd.SetIntValue( var16, r"MeshOptions", 0 ) -VCmd.SetIntValue( var16, r"NoOfLayers", 3 ) -VCmd.SetIntValue( var16, r"NoOfLayers", 3 ) -VCmd.SetObjectValue( var16, r"Model", "M @0" ) -VCmd.Accept( var16 ) -VCmd.Quit( var16 ) -#__________________ LaminateMesh END __________________ -#__________________ PartOrientationDefinition BEGIN __________________ -var17=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"PartOrientationDefinition" ) -VCmd.SetObjectValue( var17, r"CurrentModel", "M @0" ) -VCmd.SetObjectValue( var17, r"SelectedOrientationObj", "ORI 2" ) -lst1_count,lst1 = VScn.StringList( r" 10001/PART_Layer_1 | 10002/PART_Layer_2 | 10003/PART_Layer_3 | 10004/PART_Layer_4 " ) -VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) -VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) -ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) -lst1_count,lst1 = VScn.StringList( r" 10000/Level_10000 " ) -VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) -lst1_count,lst1 = VScn.List( " P 10000 " ) -VCmd.SetObjectArrayValue( var17, r"PartSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var17, r"TransferPartsToOriList" ) -VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) -ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) -lst1_count,lst1 = VScn.StringList( r" All " ) -VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) -VCmd.SetIntValue( var17, r"YDisplayFlag", 1 ) -lst1_count,lst1 = VScn.List( " ORI 1 " ) -VCmd.SetDbsVectorValue( var17, r"InnerOrientation", lst1_count, lst1 ) -VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) -ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) -ret=VCmd.ExecuteCommand( var17, r"TransferAxisPtCrvToOriList" ) -VCmd.Accept( var17 ) -VCmd.SetIntValue( var17, r"PartSelectedFlag", 3 ) -ret=VCmd.ExecuteCommand( var17, r"RefreshOrientationList" ) -ret=VCmd.ExecuteCommand( var17, r"ClearListSel" ) -VCmd.SetIntValue( var17, r"XDisplayFlag", 0 ) -VCmd.SetIntValue( var17, r"YDisplayFlag", 0 ) -VCmd.SetIntValue( var17, r"ZDisplayFlag", 0 ) -ret=VCmd.ExecuteCommand( var17, r"CreateNewOrientation" ) -VCmd.SetIntValue( var17, r"OrientMethod", 4 ) -lst1_count,lst1 = VScn.StringList( r" All " ) -VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) -lst1_count,lst1 = VScn.List( " P 10001:10004 " ) -VCmd.SetObjectArrayValue( var17, r"PartSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var17, r"TransferPartsToOriList" ) -VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) -ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) -lst1_count,lst1 = VScn.StringList( r" All " ) -VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) -lst1_count,lst1 = VScn.List( " ORI 2 " ) -VCmd.SetDbsVectorValue( var17, r"InnerOrientation", lst1_count, lst1 ) -VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) -ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) -ret=VCmd.ExecuteCommand( var17, r"TransferAxisPtCrvToOriList" ) -VCmd.Accept( var17 ) -VCmd.Quit( var17 ) -#__________________ PartOrientationDefinition END __________________ -#__________________ CompositeLayerDesignManager BEGIN __________________ -var10=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) -VCmd.SetGuStringValue( var10, r"LayerLaminateListFlag", r"LayerList" ) -VCmd.SetGuStringValue( var10, r"PlyReinforcementLaminate", r"Ply" ) -VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var10, r"MatNameFilter", r"L_PLY" ) -VCmd.SetIntValue( var10, r"SameMatAssignmentOtherLayerFlag", 7 ) -VCmd.SetGuStringValue( var10, r"SameMatAssignmentOtherLayer", r"True" ) -ret=VCmd.ExecuteCommand( var10, r"TransferMaterialToInterfaceList" ) -VCmd.Accept( var10 ) -VCmd.Quit( var10 ) -#__________________ CompositeLayerDesignManager END __________________ -var4=VCmd.Activate( 0, r"VCompUtils.VCompUtilsCmdInterface", r"RTMtoDistortionProperties" ) -VCmd.Quit( var4 ) - -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) - +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.5 +# Date : Fri Mar 31 16:36:46 2023 +#------------------------------------------------------------------------------- +import os + +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +VE.SetCurrentPage( 1 ) +VExpMngr.SetFilesOfType( r"All" ) + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +print(100*'_') +print('DISTORTION, preparing model. p31') +print('Reading list of variables') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbCuringFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbCuringFilePath = linesplit[2] + print('vdb curing file found') + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + +ret=VE.ChangeContext( r"Visual-RTM" ) +ret=VExpMngr.LoadFile( VdbCuringFilePath, 0 ) + +lst1_count,lst1 = VScn.List( " P 10001:10004 " ) +VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) +lst1_count,lst1 = VScn.List( " P 10000 " ) +VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var1, r"ShowSelected" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +#__________________ SimulationControl BEGIN __________________ +var6=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) +VCmd.SetObjectValue( var6, r"CurrentModel", "M @0" ) +VE.SetActiveWindow( r"p1w1" ) +VCmd.Quit( var6 ) +#__________________ SimulationControl END __________________ +#__________________ CompositeLayerDesignManager BEGIN __________________ +var7=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) +VCmd.SetIntValue( var7, r"Part2D3DOption", 3 ) +VCmd.SetGuStringValue( var7, r"LayerLaminateListFlag", r"LaminateList" ) +VCmd.SetGuStringValue( var7, r"SuppressMaterialNames", r"LAMINATE_6 LAMINATE_3 LAMINATE_4 LAMINATE_5" ) +VCmd.SetIntValue( var7, r"Part2D3DOption", 2 ) +VCmd.Quit( var7 ) +#__________________ CompositeLayerDesignManager END __________________ +ret=VE.ChangeContext( r"Visual-Mesh" ) +ret=VE.ChangeSkin( r"General" ) +VE.SetActiveWindow( r"p1w1" ) +VCmd.SetStringValue( var1, r"TargetName", r"Element" ) +lst1_count,lst1 = VScn.List( " T 1921:6432 " ) +VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count , lst1 ) +ret=VCmd.ExecuteCommand( var1, r"DeleteEntities" ) +var9=VCmdGui.Create( r"VModelValidate.VCommandEleGeom" ) +VCmdGui.SetIntValue( var9, r"QualParaType", 2 ) +VCmdGui.SetIntValue( var9, r"ElemGeomGuiType", 1 ) +VCmdGui.Activate( var9, 0 ) +VCmdGui.SetIntValue( var9, r"QualParaType", 1 ) +lst1_count,lst1 = VScn.StringList( r" 1 | 2.000000 | 1 | 4.000000 | 1 | 2.000000 | 1 | 2.000000 " ) +VCmdGui.SetStringArrayValue( var9, r"1DParameterInfo", lst1_count, lst1 ) +VCmdGui.SetIntValue( var9, r"QualParaType", 2 ) +lst1_count,lst1 = VScn.StringList( r" 1 | 8.000000 | 1 | 30.000000 | 1 | 4.000000 | 1 | 45.000000 | 1 | 135.000000 | 1 | 30.000000 | 1 | 120.000000 | 1 | 8.000000 | 1 | 0.700000 | 1 | 45.000000 | 1 | 0.700000 | 1 | 8.000000 | 0 | 0.001000 " ) +VCmdGui.SetStringArrayValue( var9, r"2DParameterInfo", lst1_count, lst1 ) +VCmdGui.SetIntValue( var9, r"QualParaType", 3 ) +lst1_count,lst1 = VScn.StringList( r" 1 | 8.000000 | 1 | 30.000000 | 1 | 8.000000 | 1 | 45.000000 | 1 | 135.000000 | 1 | 30.000000 | 1 | 120.000000 | 1 | 8.000000 | 1 | 0.700000 | 1 | 45.000000 | 1 | 0.700000 | 1 | 0.500000 | 1 | 8.000000 | 1 | 0.500000 | 1 | 8.000000 | 0 | 0.001000 " ) +VCmdGui.SetStringArrayValue( var9, r"3DParameterInfo", lst1_count, lst1 ) +VCmdGui.Quit( var9 ) +#__________________ TopologyMesh BEGIN __________________ +var13=VCmd.Activate( 1, r"VMeshModeler.VmmICommandGui", r"TopologyMesh" ) +VCmd.SetObjectValue( var13, r"CurrentModel", "M @0" ) +VCmd.SetIntValue( var13, r"MeshType", 1 ) +ret=VCmd.ExecuteCommand( var13, r"MeshAllFaces" ) +VCmd.Cancel( var13 ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +#__________________ SimulationControl BEGIN __________________ +var14=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) +VCmd.SetObjectValue( var14, r"CurrentModel", "M @0" ) +VE.SetActiveWindow( r"p1w1" ) +VCmd.Quit( var14 ) +#__________________ SimulationControl END __________________ +#__________________ CompositeLayerDesignManager BEGIN __________________ +var15=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) +VCmd.SetIntValue( var15, r"Part2D3DOption", 3 ) +VCmd.SetIntValue( var15, r"Part2D3DOption", 2 ) +VCmd.Quit( var15 ) +#__________________ CompositeLayerDesignManager END __________________ +#__________________ LaminateMesh BEGIN __________________ +var16=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"LaminateMesh" ) +VCmd.SetIntValue( var16, r"MeshOptions", 0 ) +VCmd.SetIntValue( var16, r"NoOfLayers", 3 ) +VCmd.SetIntValue( var16, r"NoOfLayers", 3 ) +VCmd.SetObjectValue( var16, r"Model", "M @0" ) +VCmd.Accept( var16 ) +VCmd.Quit( var16 ) +#__________________ LaminateMesh END __________________ +#__________________ PartOrientationDefinition BEGIN __________________ +var17=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"PartOrientationDefinition" ) +VCmd.SetObjectValue( var17, r"CurrentModel", "M @0" ) +VCmd.SetObjectValue( var17, r"SelectedOrientationObj", "ORI 2" ) +lst1_count,lst1 = VScn.StringList( r" 10001/PART_Layer_1 | 10002/PART_Layer_2 | 10003/PART_Layer_3 | 10004/PART_Layer_4 " ) +VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) +VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) +ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) +lst1_count,lst1 = VScn.StringList( r" 10000/Level_10000 " ) +VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) +lst1_count,lst1 = VScn.List( " P 10000 " ) +VCmd.SetObjectArrayValue( var17, r"PartSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var17, r"TransferPartsToOriList" ) +VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) +ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) +lst1_count,lst1 = VScn.StringList( r" All " ) +VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) +VCmd.SetIntValue( var17, r"YDisplayFlag", 1 ) +lst1_count,lst1 = VScn.List( " ORI 1 " ) +VCmd.SetDbsVectorValue( var17, r"InnerOrientation", lst1_count, lst1 ) +VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) +ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) +ret=VCmd.ExecuteCommand( var17, r"TransferAxisPtCrvToOriList" ) +VCmd.Accept( var17 ) +VCmd.SetIntValue( var17, r"PartSelectedFlag", 3 ) +ret=VCmd.ExecuteCommand( var17, r"RefreshOrientationList" ) +ret=VCmd.ExecuteCommand( var17, r"ClearListSel" ) +VCmd.SetIntValue( var17, r"XDisplayFlag", 0 ) +VCmd.SetIntValue( var17, r"YDisplayFlag", 0 ) +VCmd.SetIntValue( var17, r"ZDisplayFlag", 0 ) +ret=VCmd.ExecuteCommand( var17, r"CreateNewOrientation" ) +VCmd.SetIntValue( var17, r"OrientMethod", 4 ) +lst1_count,lst1 = VScn.StringList( r" All " ) +VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) +lst1_count,lst1 = VScn.List( " P 10001:10004 " ) +VCmd.SetObjectArrayValue( var17, r"PartSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var17, r"TransferPartsToOriList" ) +VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) +ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) +lst1_count,lst1 = VScn.StringList( r" All " ) +VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) +lst1_count,lst1 = VScn.List( " ORI 2 " ) +VCmd.SetDbsVectorValue( var17, r"InnerOrientation", lst1_count, lst1 ) +VCmd.SetIntValue( var17, r"SimulationCheck", 1 ) +ret=VCmd.ExecuteCommand( var17, r"SimulateOrientMethod" ) +ret=VCmd.ExecuteCommand( var17, r"TransferAxisPtCrvToOriList" ) +VCmd.Accept( var17 ) +VCmd.Quit( var17 ) +#__________________ PartOrientationDefinition END __________________ +#__________________ CompositeLayerDesignManager BEGIN __________________ +var10=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) +VCmd.SetGuStringValue( var10, r"LayerLaminateListFlag", r"LayerList" ) +VCmd.SetGuStringValue( var10, r"PlyReinforcementLaminate", r"Ply" ) +VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var10, r"MatNameFilter", r"L_PLY" ) +VCmd.SetIntValue( var10, r"SameMatAssignmentOtherLayerFlag", 7 ) +VCmd.SetGuStringValue( var10, r"SameMatAssignmentOtherLayer", r"True" ) +ret=VCmd.ExecuteCommand( var10, r"TransferMaterialToInterfaceList" ) +VCmd.Accept( var10 ) +VCmd.Quit( var10 ) +#__________________ CompositeLayerDesignManager END __________________ +var4=VCmd.Activate( 0, r"VCompUtils.VCompUtilsCmdInterface", r"RTMtoDistortionProperties" ) +VCmd.Quit( var4 ) + +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) + diff --git a/PHASES/AUTOMATION_ML/utils/32_DistortionResinParameters.py b/PHASES/AUTOMATION_ML/utils/32_DistortionResinParameters.py index ac4f4e6..2c666ba 100644 --- a/PHASES/AUTOMATION_ML/utils/32_DistortionResinParameters.py +++ b/PHASES/AUTOMATION_ML/utils/32_DistortionResinParameters.py @@ -1,230 +1,230 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 14:25:28 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 14:04:06 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - -print('100*_') -print('DISTORTION, resin parameters. p32') -print('Reading list of variables') - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) -#__________________ GenericMaterialEditor BEGIN __________________ -var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) -VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) -VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"SelectDb", r"User" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"RTM_DIST" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/RTM_DIST" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Resin" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Resin" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Resin" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_RTM" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_RTM" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Glassy" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"Pa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 4.24" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 4.24" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyPoissonsRatio" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.365" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 1.55" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyCoefThermalExpansion" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 4.4e-05" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"AutoComputeRubberyProperties" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertySValue", r"true" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"GlassyChemicalShrinkage" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" -0.018" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Rubbery" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"RubberyChemicalShrinkage" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_rubbery" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" -0.018" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Chemical" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinChemicalDegreeofcureatgelation" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.6" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"K" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" -11" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" -11" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Lambda" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 206" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 206" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Lambda" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.44" ) -ret=VCmd.ExecuteCommand( var4, r"Save" ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) - -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) - -#__________________ GenericMaterialEditor END __________________ -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'Shrinkage' in line: - print('shrinkage is in line') - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - Shrinkage = linesplit[2] - - #__________________ GenericMaterialEditor BEGIN __________________ - var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) - VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) - VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) - VCmd.SetStringValue( var4, r"SelectDb", r"User" ) - ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) - VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) - VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Resin" ) - VCmd.SetStringValue( var4, r"FolderPath", r"Resin" ) - VCmd.SetStringValue( var4, r"ActiveClass", r"Resin" ) - VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_RTM" ) - VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) - VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_RTM" ) - VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Glassy" ) - VCmd.SetStringValue( var4, r"ActiveProperty", r"GlassyChemicalShrinkage" ) - VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) - VCmd.SetStringValue( var4, r"PropertySValue", str(Shrinkage) ) - VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Rubbery" ) - VCmd.SetStringValue( var4, r"ActiveProperty", r"RubberyChemicalShrinkage" ) - VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_rubbery" ) - VCmd.SetStringValue( var4, r"PropertySValue", str(Shrinkage) ) - ret=VCmd.ExecuteCommand( var4, r"Save" ) - VCmd.Accept( var4 ) - VCmd.Quit( var4 ) - -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzResin.vdb', 0 ) -# VE.DeleteWindow( ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 14:25:28 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 14:04:06 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + +print('100*_') +print('DISTORTION, resin parameters. p32') +print('Reading list of variables') + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) +#__________________ GenericMaterialEditor BEGIN __________________ +var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) +VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) +VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"SelectDb", r"User" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"RTM_DIST" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/RTM_DIST" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Resin" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Resin" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Resin" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_RTM" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_RTM" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Glassy" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"Pa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 4.24" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyTensileYoungsModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 4.24" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyPoissonsRatio" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.365" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyShearModulus" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 1.55" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinGlassyCoefThermalExpansion" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 4.4e-05" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"AutoComputeRubberyProperties" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertySValue", r"true" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"GlassyChemicalShrinkage" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" -0.018" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Rubbery" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"RubberyChemicalShrinkage" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_rubbery" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" -0.018" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Chemical" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"ResinChemicalDegreeofcureatgelation" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.6" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"K" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" -11" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tg0" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" -11" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Lambda" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 206" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Tginf" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"C" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 206" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Resin_Lambda" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_chemical" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.44" ) +ret=VCmd.ExecuteCommand( var4, r"Save" ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) + +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) + +#__________________ GenericMaterialEditor END __________________ +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'Shrinkage' in line: + print('shrinkage is in line') + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + Shrinkage = linesplit[2] + + #__________________ GenericMaterialEditor BEGIN __________________ + var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) + VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) + VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) + VCmd.SetStringValue( var4, r"SelectDb", r"User" ) + ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) + VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) + VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Resin" ) + VCmd.SetStringValue( var4, r"FolderPath", r"Resin" ) + VCmd.SetStringValue( var4, r"ActiveClass", r"Resin" ) + VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_RTM" ) + VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) + VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_RTM" ) + VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Glassy" ) + VCmd.SetStringValue( var4, r"ActiveProperty", r"GlassyChemicalShrinkage" ) + VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_glassy" ) + VCmd.SetStringValue( var4, r"PropertySValue", str(Shrinkage) ) + VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Rubbery" ) + VCmd.SetStringValue( var4, r"ActiveProperty", r"RubberyChemicalShrinkage" ) + VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_resin_rubbery" ) + VCmd.SetStringValue( var4, r"PropertySValue", str(Shrinkage) ) + ret=VCmd.ExecuteCommand( var4, r"Save" ) + VCmd.Accept( var4 ) + VCmd.Quit( var4 ) + +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzResin.vdb', 0 ) +# VE.DeleteWindow( ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/33_DistortionFiberParameters.py b/PHASES/AUTOMATION_ML/utils/33_DistortionFiberParameters.py index fdfc5e9..492e08b 100644 --- a/PHASES/AUTOMATION_ML/utils/33_DistortionFiberParameters.py +++ b/PHASES/AUTOMATION_ML/utils/33_DistortionFiberParameters.py @@ -1,194 +1,194 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 14:31:21 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 14:28:02 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - - -print('100*_') -print('DISTORTION, fiber parameters. p33') -print('Reading list of variables') - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -print('setting fibers') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) -#__________________ GenericMaterialEditor BEGIN __________________ -var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) -VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) -VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"SelectDb", r"User" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Reinforcement" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"RTM_DIST" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/RTM_DIST" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_FIBER" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) -VCmd.SetIntValue( var4, r"MTXSetIOFlag", 256 ) -VCmd.SetStringValue( var4, r"ActiveProperty", '' ) -ret=VCmd.ExecuteCommand( var4, r"Save" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_FIBER" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetIntValue( var4, r"CleaFlag", 256 ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Density" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_General" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"kg/m^3" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 1800" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Fiber Properties" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 230" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 15" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberPoissonsRatioInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.3" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"Pa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 3" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberPoissonsRatioInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.3" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 25" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 7" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberCoefThermalExpansionInLengthDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" -6.3e-07" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberCoefThermalExpansionInTransverseDirection" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) -VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 6.3e-06" ) -ret=VCmd.ExecuteCommand( var4, r"Save" ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) -#__________________ GenericMaterialEditor END __________________ -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzFiber.vdb', 0 ) -# VE.DeleteWindow( ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 14:31:21 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 14:28:02 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + + +print('100*_') +print('DISTORTION, fiber parameters. p33') +print('Reading list of variables') + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +print('setting fibers') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) +#__________________ GenericMaterialEditor BEGIN __________________ +var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) +VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) +VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"SelectDb", r"User" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Reinforcement" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"RTM_DIST" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/RTM_DIST" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_FIBER" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) +VCmd.SetIntValue( var4, r"MTXSetIOFlag", 256 ) +VCmd.SetStringValue( var4, r"ActiveProperty", '' ) +ret=VCmd.ExecuteCommand( var4, r"Save" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Fiber" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Fiber" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_FIBER" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetIntValue( var4, r"CleaFlag", 256 ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Density" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_General" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"kg/m^3" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 1800" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"Fiber Properties" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 230" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberYoungsModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 15" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberPoissonsRatioInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.3" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"Pa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 3" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberPoissonsRatioInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.3" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 25" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberShearModulusInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"GPa" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 7" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberCoefThermalExpansionInLengthDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" -6.3e-07" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"FiberCoefThermalExpansionInTransverseDirection" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"composite_fiber_properties" ) +VCmd.SetStringValue( var4, r"PropertyValueUnit", r"1/K" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 6.3e-06" ) +ret=VCmd.ExecuteCommand( var4, r"Save" ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) +#__________________ GenericMaterialEditor END __________________ +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzFiber.vdb', 0 ) +# VE.DeleteWindow( ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/34_DistortionComputePly.py b/PHASES/AUTOMATION_ML/utils/34_DistortionComputePly.py index dcb9b99..3ce7341 100644 --- a/PHASES/AUTOMATION_ML/utils/34_DistortionComputePly.py +++ b/PHASES/AUTOMATION_ML/utils/34_DistortionComputePly.py @@ -1,248 +1,248 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 14:39:50 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 14:34:45 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-Distortion" ) - -print(100*'_') -print('DISTORTION, Ply. p34') -print('Reading list of variables') - -#External Variables file: -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - if 'DistortionSolverFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - DistortionSolverFilePath = linesplit[2] - if 'DistortionSolverFolderPath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - DistortionSolverFolderPath = linesplit[2] - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) - -#__________________ SolverManager BEGIN __________________ -var8=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -VCmd.SetGuStringValue( var8, r"SolverPath", DistortionSolverFolderPath ) -VCmd.Quit( var8 ) - -# #__________________ GenericMaterialEditor BEGIN __________________ -# var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -# ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) -# VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) -# VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) -# ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -# VCmd.SetObjectValue( var4, r"CurrentModularMaterial", "PLY 2" ) -# VCmd.SetStringValue( var4, r"SelectDb", r"User" ) -# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var4, r"Filter", r"Ply" ) -# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) -# VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) -# VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) -# VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) -# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) -# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) -# VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) -# VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) -# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) -# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_PLY" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"Density" ) -# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_General" ) -# VCmd.SetStringValue( var4, r"PropertyValueUnit", r"kg/m^3" ) -# ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) -# VCmd.SetStringValue( var4, r"PropertySValue", r" 1100" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"DatabaseName" ) -# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_resin_selection" ) -# VCmd.SetStringValue( var4, r"PropertySValue", r"L_RTM" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_fiber_selection" ) -# VCmd.SetStringValue( var4, r"PropertySValue", r"L_FIBER" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"Distorotion_Fiber_Content" ) -# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) -# VCmd.SetStringValue( var4, r"PropertySValue", r" 0.664" ) -# VCmd.SetStringValue( var4, r"ActiveProperty", r"Compute properties..." ) -# VCmd.SetStringValue( var4, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -# VCmd.Quit( var4 ) -# #__________________ GenericMaterialEditor END __________________ -#__________________ SolverManager BEGIN __________________ -# var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -# VCmd.SetGuStringValue( var4, r"SolverPath", DistortionSolverFolderPath ) -# VCmd.Quit( var4 ) -#__________________ SolverManager END __________________ -#__________________ GenericMaterialEditor BEGIN __________________ -# var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -# VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) -# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -# VCmd.SetObjectValue( var5, r"CurrentModularMaterial", "PLY 2" ) -# VCmd.SetStringValue( var5, r"SelectDb", r"User" ) -# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var5, r"Filter", r"Ply" ) -# VCmd.SetStringValue( var5, r"ActiveMaterial", r"L_PLY" ) -# VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Ply" ) -# VCmd.SetStringValue( var5, r"FolderPath", r"Ply" ) -# VCmd.SetStringValue( var5, r"ActiveClass", r"Ply" ) -# VCmd.SetStringValue( var5, r"ActiveMaterial", r"L_PLY" ) -# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var5, r"ActiveProperty", r"Compute properties..." ) -# VCmd.SetStringValue( var5, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -# ret=VCmd.ExecuteCommand( var5, r"UpdateComputeCb" ) -# ret=VCmd.ExecuteCommand( var5, r"ExecuteCompute" ) -# VCmd.Quit( var5 ) -#__________________ GenericMaterialEditor END __________________ -#__________________ GenericMaterialEditor BEGIN __________________ -# var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -# VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) -# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -# #__________________ GenericMaterialEditor BEGIN __________________ -# var6=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -# VCmd.SetStringValue( var6, r"SelectDb", r"User" ) -# ret=VCmd.ExecuteCommand( var6, r"ClearSearchPtr" ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"Filter", r"All" ) -# VCmd.SetStringValue( var6, r"FolderPath", r"All" ) -# VCmd.SetStringValue( var6, r"ActiveMaterial", '' ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"ActiveFolderClassID", r"Ply" ) -# VCmd.SetStringValue( var6, r"FolderPath", r"Ply" ) -# VCmd.SetStringValue( var6, r"ActiveClass", r"Ply" ) -# VCmd.SetStringValue( var6, r"ActiveMaterial", r"Ply_New_1" ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"RecentMaterialList", r"User/Ply_New_1" ) -# VCmd.SetStringValue( var6, r"ActiveProperty", r"Compute properties..." ) -# VCmd.SetStringValue( var6, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -# ret=VCmd.ExecuteCommand( var6, r"UpdateComputeCb" ) -# ret=VCmd.ExecuteCommand( var6, r"ExecuteCompute" ) -# VCmd.Quit( var6 ) -print('First caracterization') -print('First caracterization') -print('First caracterization') -# #__________________ GenericMaterialEditor BEGIN __________________ -# var6=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -# VCmd.SetStringValue( var6, r"SelectDb", r"User" ) -# ret=VCmd.ExecuteCommand( var6, r"ClearSearchPtr" ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"Filter", r"All" ) -# VCmd.SetStringValue( var6, r"FolderPath", r"All" ) -# VCmd.SetStringValue( var6, r"ActiveMaterial", '' ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"ActiveFolderClassID", r"Ply" ) -# VCmd.SetStringValue( var6, r"FolderPath", r"Ply" ) -# VCmd.SetStringValue( var6, r"ActiveClass", r"Ply" ) -# VCmd.SetStringValue( var6, r"ActiveMaterial", r"Ply_New_1" ) -# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) -# VCmd.SetStringValue( var6, r"RecentMaterialList", r"User/Ply_New_1" ) -# VCmd.SetStringValue( var6, r"ActiveProperty", r"Compute properties..." ) -# VCmd.SetStringValue( var6, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -# ret=VCmd.ExecuteCommand( var6, r"UpdateComputeCb" ) -# ret=VCmd.ExecuteCommand( var6, r"ExecuteCompute" ) -# VCmd.Quit( var6 ) - -#__________________ GenericMaterialEditor BEGIN __________________ -var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"Filter", r"All" ) -VCmd.SetStringValue( var4, r"FolderPath", r"All" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", '' ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"SelectDb", r"User" ) -ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) -VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) -VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) -VCmd.SetStringValue( var4, r"ActiveMaterial", r"Ply_New_1" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/Ply_New_1" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_resin_selection" ) -VCmd.SetStringValue( var4, r"PropertySValue", r"L_RTM" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_fiber_selection" ) -VCmd.SetStringValue( var4, r"PropertySValue", r"L_FIBER" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Distorotion_Fiber_Content" ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) -VCmd.SetStringValue( var4, r"PropertySValue", r" 0.5" ) -VCmd.SetStringValue( var4, r"ActiveProperty", r"Compute properties..." ) -VCmd.SetStringValue( var4, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -ret=VCmd.ExecuteCommand( var4, r"UpdateComputeCb" ) -ret=VCmd.ExecuteCommand( var4, r"ExecuteCompute" ) -VCmd.Quit( var4 ) -#__________________ GenericMaterialEditor END __________________ -#__________________ GenericMaterialEditor BEGIN __________________ -var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.Quit( var5 ) - -print('First caracterization finished') - -#__________________ GenericMaterialEditor END __________________ -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzPly.vdb', 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 14:39:50 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 14:34:45 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-Distortion" ) + +print(100*'_') +print('DISTORTION, Ply. p34') +print('Reading list of variables') + +#External Variables file: +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + if 'DistortionSolverFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + DistortionSolverFilePath = linesplit[2] + if 'DistortionSolverFolderPath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + DistortionSolverFolderPath = linesplit[2] + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) + +#__________________ SolverManager BEGIN __________________ +var8=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +VCmd.SetGuStringValue( var8, r"SolverPath", DistortionSolverFolderPath ) +VCmd.Quit( var8 ) + +# #__________________ GenericMaterialEditor BEGIN __________________ +# var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +# ret=VCmd.ExecuteCommand( var4, r"MaterialNamingSystem" ) +# VCmd.SetStringValue( var4, r"ActiveDomain", r"Visual Distortion" ) +# VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) +# ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +# VCmd.SetObjectValue( var4, r"CurrentModularMaterial", "PLY 2" ) +# VCmd.SetStringValue( var4, r"SelectDb", r"User" ) +# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var4, r"Filter", r"Ply" ) +# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) +# VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) +# VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) +# VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) +# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) +# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) +# VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) +# VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) +# VCmd.SetStringValue( var4, r"ActiveMaterial", r"L_PLY" ) +# VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/L_PLY" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"Density" ) +# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_General" ) +# VCmd.SetStringValue( var4, r"PropertyValueUnit", r"kg/m^3" ) +# ret=VCmd.ExecuteCommand( var4, r"UpdateParamForUnit" ) +# VCmd.SetStringValue( var4, r"PropertySValue", r" 1100" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"DatabaseName" ) +# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_resin_selection" ) +# VCmd.SetStringValue( var4, r"PropertySValue", r"L_RTM" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_fiber_selection" ) +# VCmd.SetStringValue( var4, r"PropertySValue", r"L_FIBER" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"Distorotion_Fiber_Content" ) +# VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) +# VCmd.SetStringValue( var4, r"PropertySValue", r" 0.664" ) +# VCmd.SetStringValue( var4, r"ActiveProperty", r"Compute properties..." ) +# VCmd.SetStringValue( var4, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +# VCmd.Quit( var4 ) +# #__________________ GenericMaterialEditor END __________________ +#__________________ SolverManager BEGIN __________________ +# var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +# VCmd.SetGuStringValue( var4, r"SolverPath", DistortionSolverFolderPath ) +# VCmd.Quit( var4 ) +#__________________ SolverManager END __________________ +#__________________ GenericMaterialEditor BEGIN __________________ +# var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +# VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) +# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +# VCmd.SetObjectValue( var5, r"CurrentModularMaterial", "PLY 2" ) +# VCmd.SetStringValue( var5, r"SelectDb", r"User" ) +# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var5, r"Filter", r"Ply" ) +# VCmd.SetStringValue( var5, r"ActiveMaterial", r"L_PLY" ) +# VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Ply" ) +# VCmd.SetStringValue( var5, r"FolderPath", r"Ply" ) +# VCmd.SetStringValue( var5, r"ActiveClass", r"Ply" ) +# VCmd.SetStringValue( var5, r"ActiveMaterial", r"L_PLY" ) +# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var5, r"ActiveProperty", r"Compute properties..." ) +# VCmd.SetStringValue( var5, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +# ret=VCmd.ExecuteCommand( var5, r"UpdateComputeCb" ) +# ret=VCmd.ExecuteCommand( var5, r"ExecuteCompute" ) +# VCmd.Quit( var5 ) +#__________________ GenericMaterialEditor END __________________ +#__________________ GenericMaterialEditor BEGIN __________________ +# var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +# VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) +# VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +# #__________________ GenericMaterialEditor BEGIN __________________ +# var6=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +# VCmd.SetStringValue( var6, r"SelectDb", r"User" ) +# ret=VCmd.ExecuteCommand( var6, r"ClearSearchPtr" ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"Filter", r"All" ) +# VCmd.SetStringValue( var6, r"FolderPath", r"All" ) +# VCmd.SetStringValue( var6, r"ActiveMaterial", '' ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"ActiveFolderClassID", r"Ply" ) +# VCmd.SetStringValue( var6, r"FolderPath", r"Ply" ) +# VCmd.SetStringValue( var6, r"ActiveClass", r"Ply" ) +# VCmd.SetStringValue( var6, r"ActiveMaterial", r"Ply_New_1" ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"RecentMaterialList", r"User/Ply_New_1" ) +# VCmd.SetStringValue( var6, r"ActiveProperty", r"Compute properties..." ) +# VCmd.SetStringValue( var6, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +# ret=VCmd.ExecuteCommand( var6, r"UpdateComputeCb" ) +# ret=VCmd.ExecuteCommand( var6, r"ExecuteCompute" ) +# VCmd.Quit( var6 ) +print('First caracterization') +print('First caracterization') +print('First caracterization') +# #__________________ GenericMaterialEditor BEGIN __________________ +# var6=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +# VCmd.SetStringValue( var6, r"SelectDb", r"User" ) +# ret=VCmd.ExecuteCommand( var6, r"ClearSearchPtr" ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"Filter", r"All" ) +# VCmd.SetStringValue( var6, r"FolderPath", r"All" ) +# VCmd.SetStringValue( var6, r"ActiveMaterial", '' ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"ActiveFolderClassID", r"Ply" ) +# VCmd.SetStringValue( var6, r"FolderPath", r"Ply" ) +# VCmd.SetStringValue( var6, r"ActiveClass", r"Ply" ) +# VCmd.SetStringValue( var6, r"ActiveMaterial", r"Ply_New_1" ) +# VCmd.SetStringValue( var6, r"ActiveCategoryTab", r"General" ) +# VCmd.SetStringValue( var6, r"RecentMaterialList", r"User/Ply_New_1" ) +# VCmd.SetStringValue( var6, r"ActiveProperty", r"Compute properties..." ) +# VCmd.SetStringValue( var6, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +# ret=VCmd.ExecuteCommand( var6, r"UpdateComputeCb" ) +# ret=VCmd.ExecuteCommand( var6, r"ExecuteCompute" ) +# VCmd.Quit( var6 ) + +#__________________ GenericMaterialEditor BEGIN __________________ +var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"Filter", r"All" ) +VCmd.SetStringValue( var4, r"FolderPath", r"All" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", '' ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"SelectDb", r"Public" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"SelectDb", r"User" ) +ret=VCmd.ExecuteCommand( var4, r"ClearSearchPtr" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"ActiveFolderClassID", r"Ply" ) +VCmd.SetStringValue( var4, r"FolderPath", r"Ply" ) +VCmd.SetStringValue( var4, r"ActiveClass", r"Ply" ) +VCmd.SetStringValue( var4, r"ActiveMaterial", r"Ply_New_1" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var4, r"RecentMaterialList", r"User/Ply_New_1" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_resin_selection" ) +VCmd.SetStringValue( var4, r"PropertySValue", r"L_RTM" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"rein_fiber_selection" ) +VCmd.SetStringValue( var4, r"PropertySValue", r"L_FIBER" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Distorotion_Fiber_Content" ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"Distortion_rein_fiber_reference" ) +VCmd.SetStringValue( var4, r"PropertySValue", r" 0.5" ) +VCmd.SetStringValue( var4, r"ActiveProperty", r"Compute properties..." ) +VCmd.SetStringValue( var4, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +ret=VCmd.ExecuteCommand( var4, r"UpdateComputeCb" ) +ret=VCmd.ExecuteCommand( var4, r"ExecuteCompute" ) +VCmd.Quit( var4 ) +#__________________ GenericMaterialEditor END __________________ +#__________________ GenericMaterialEditor BEGIN __________________ +var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.Quit( var5 ) + +print('First caracterization finished') + +#__________________ GenericMaterialEditor END __________________ +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzPly.vdb', 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/35_DistortionCharacterizeLaminate.py b/PHASES/AUTOMATION_ML/utils/35_DistortionCharacterizeLaminate.py index ae11836..39c3e9d 100644 --- a/PHASES/AUTOMATION_ML/utils/35_DistortionCharacterizeLaminate.py +++ b/PHASES/AUTOMATION_ML/utils/35_DistortionCharacterizeLaminate.py @@ -1,177 +1,177 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 14:55:18 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 14:52:08 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - -print('100*_') -print('DISTORTION, Characterize Laminate. p35') -print('Reading list of variables') - -#External Variables file: -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - if 'DistortionSolverFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - DistortionSolverFilePath = linesplit[2] - if 'DistortionSolverFolderPath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - DistortionSolverFolderPath = linesplit[2] - -print('solver path is : ', DistortionSolverFolderPath) - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) - -#__________________ SolverManager BEGIN __________________ -var13=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -VCmd.SetGuStringValue( var13, r"SolverPath", DistortionSolverFolderPath ) -VCmd.Quit( var13 ) -#__________________ CompositeLayerDesignManager BEGIN __________________ -var10=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) -VCmd.SetGuStringValue( var10, r"LayerLaminateListFlag", r"LayerList" ) -VCmd.SetGuStringValue( var10, r"PlyReinforcementLaminate", r"Ply" ) -VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var10, r"MatNameFilter", r"L_PLY" ) -VCmd.SetIntValue( var10, r"SameMatAssignmentOtherLayerFlag", 7 ) -VCmd.SetGuStringValue( var10, r"SameMatAssignmentOtherLayer", r"True" ) -ret=VCmd.ExecuteCommand( var10, r"TransferMaterialToInterfaceList" ) -VCmd.Accept( var10 ) -VCmd.Quit( var10 ) -var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -VCmd.SetStringValue( var5, r"SelectDb", r"User" ) -ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) -ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Resin" ) -VCmd.SetStringValue( var5, r"FolderPath", r"Resin" ) -VCmd.SetStringValue( var5, r"ActiveClass", r"Resin" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"FolderPath", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"ActiveClass", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Resin" ) -VCmd.SetStringValue( var5, r"FolderPath", r"Resin" ) -VCmd.SetStringValue( var5, r"ActiveClass", r"Resin" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"FolderPath", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"ActiveClass", r"Reinforcement" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"SelectDb", r"User" ) -ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"Filter", r"All" ) -VCmd.SetStringValue( var5, r"FolderPath", r"All" ) -VCmd.SetStringValue( var5, r"ActiveMaterial", '' ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Ply" ) -VCmd.SetStringValue( var5, r"FolderPath", r"Ply" ) -VCmd.SetStringValue( var5, r"ActiveClass", r"Ply" ) -VCmd.SetStringValue( var5, r"ActiveMaterial", r"Ply_New_1" ) -VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) -VCmd.SetStringValue( var5, r"RecentMaterialList", r"User/Ply_New_1" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"Compute properties..." ) -VCmd.SetStringValue( var5, r"ActiveModelID", r"LaminaCharacterizationMacro" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateComputeCb" ) -ret=VCmd.ExecuteCommand( var5, r"ExecuteCompute" ) -VCmd.Quit( var5 ) - -#__________________ GenericMaterialEditor BEGIN __________________ -var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) -VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) -VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) -#__________________ CompositeLayerDesignManager BEGIN __________________ -var5=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) -VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var5, r"MatNameFilter", r"Ply_New_1" ) -VCmd.SetGuStringValue( var5, r"LayerLaminateListFlag", r"LayerList" ) -VCmd.SetGuStringValue( var5, r"PlyReinforcementLaminate", r"Ply" ) -VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) -VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) -VCmd.SetStringValue( var5, r"MatNameFilter", r"Ply_New_1" ) -VCmd.SetIntValue( var5, r"SameMatAssignmentOtherLayerFlag", 7 ) -VCmd.SetGuStringValue( var5, r"SameMatAssignmentOtherLayer", r"True" ) -ret=VCmd.ExecuteCommand( var5, r"TransferMaterialToInterfaceList" ) -VCmd.Accept( var5 ) -VCmd.Quit( var5 ) - -#__________________ CompositeLayerDesignManager END __________________ -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzLaminate.vdb', 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 14:55:18 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 14:52:08 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + +print('100*_') +print('DISTORTION, Characterize Laminate. p35') +print('Reading list of variables') + +#External Variables file: +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + if 'DistortionSolverFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + DistortionSolverFilePath = linesplit[2] + if 'DistortionSolverFolderPath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + DistortionSolverFolderPath = linesplit[2] + +print('solver path is : ', DistortionSolverFolderPath) + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) + +#__________________ SolverManager BEGIN __________________ +var13=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +VCmd.SetGuStringValue( var13, r"SolverPath", DistortionSolverFolderPath ) +VCmd.Quit( var13 ) +#__________________ CompositeLayerDesignManager BEGIN __________________ +var10=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) +VCmd.SetGuStringValue( var10, r"LayerLaminateListFlag", r"LayerList" ) +VCmd.SetGuStringValue( var10, r"PlyReinforcementLaminate", r"Ply" ) +VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var10, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var10, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var10, r"MatNameFilter", r"L_PLY" ) +VCmd.SetIntValue( var10, r"SameMatAssignmentOtherLayerFlag", 7 ) +VCmd.SetGuStringValue( var10, r"SameMatAssignmentOtherLayer", r"True" ) +ret=VCmd.ExecuteCommand( var10, r"TransferMaterialToInterfaceList" ) +VCmd.Accept( var10 ) +VCmd.Quit( var10 ) +var5=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +VCmd.SetStringValue( var5, r"SelectDb", r"User" ) +ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"SelectDb", r"Model" ) +ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Resin" ) +VCmd.SetStringValue( var5, r"FolderPath", r"Resin" ) +VCmd.SetStringValue( var5, r"ActiveClass", r"Resin" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"FolderPath", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"ActiveClass", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Resin" ) +VCmd.SetStringValue( var5, r"FolderPath", r"Resin" ) +VCmd.SetStringValue( var5, r"ActiveClass", r"Resin" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"FolderPath", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"ActiveClass", r"Reinforcement" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"SelectDb", r"User" ) +ret=VCmd.ExecuteCommand( var5, r"ClearSearchPtr" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"Filter", r"All" ) +VCmd.SetStringValue( var5, r"FolderPath", r"All" ) +VCmd.SetStringValue( var5, r"ActiveMaterial", '' ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"ActiveFolderClassID", r"Ply" ) +VCmd.SetStringValue( var5, r"FolderPath", r"Ply" ) +VCmd.SetStringValue( var5, r"ActiveClass", r"Ply" ) +VCmd.SetStringValue( var5, r"ActiveMaterial", r"Ply_New_1" ) +VCmd.SetStringValue( var5, r"ActiveCategoryTab", r"General" ) +VCmd.SetStringValue( var5, r"RecentMaterialList", r"User/Ply_New_1" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"Compute properties..." ) +VCmd.SetStringValue( var5, r"ActiveModelID", r"LaminaCharacterizationMacro" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateComputeCb" ) +ret=VCmd.ExecuteCommand( var5, r"ExecuteCompute" ) +VCmd.Quit( var5 ) + +#__________________ GenericMaterialEditor BEGIN __________________ +var4=VCmd.Activate( 1, r"VMaterial.VMaterialInterface", r"GenericMaterialEditor" ) +VCmd.SetStringValue( var4, r"SelectDb", r"Model" ) +VCmd.SetStringValue( var4, r"ActiveCategoryTab", r"General" ) +#__________________ CompositeLayerDesignManager BEGIN __________________ +var5=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) +VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var5, r"MatNameFilter", r"Ply_New_1" ) +VCmd.SetGuStringValue( var5, r"LayerLaminateListFlag", r"LayerList" ) +VCmd.SetGuStringValue( var5, r"PlyReinforcementLaminate", r"Ply" ) +VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var5, r"MatDBFilter", r"User" ) +VCmd.SetStringValue( var5, r"MatTypeFilter", r"Ply" ) +VCmd.SetStringValue( var5, r"MatNameFilter", r"Ply_New_1" ) +VCmd.SetIntValue( var5, r"SameMatAssignmentOtherLayerFlag", 7 ) +VCmd.SetGuStringValue( var5, r"SameMatAssignmentOtherLayer", r"True" ) +ret=VCmd.ExecuteCommand( var5, r"TransferMaterialToInterfaceList" ) +VCmd.Accept( var5 ) +VCmd.Quit( var5 ) + +#__________________ CompositeLayerDesignManager END __________________ +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +VExpMngr.ExportFile( r'/nishome/smo/CAELESTIS/2024_RTMDIST_test/Results/line_1/zzLaminate.vdb', 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/35_DistortionCreateLaminate.py b/PHASES/AUTOMATION_ML/utils/35_DistortionCreateLaminate.py index 7e03bfa..f31251d 100644 --- a/PHASES/AUTOMATION_ML/utils/35_DistortionCreateLaminate.py +++ b/PHASES/AUTOMATION_ML/utils/35_DistortionCreateLaminate.py @@ -1,114 +1,114 @@ -# -*- coding: utf-8 -*- -""" -Created on Fri Feb 23 11:04:14 2024 - -@author: SMO -""" - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Fri Feb 23 10:57:09 2024 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetActiveWindow( r"p1w1" ) - -import os -import json - -#SMO: read macro directory from temporary file -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbRTMFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbFilePath = linesplit[2] - -ret=VExpMngr.LoadFile(VdbFilePath,0) -ret=VE.ModelChange( "M @0" ) -lst1_count,lst1 = VScn.List( " P 10001:10044 " ) -VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var1, r"HideSelected" ) -lst1_count,lst1 = VScn.List( " P 10001:10044 " ) -VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var1, r"ShowSelected" ) - -for element in gaps: - - ###WRITE HERE - #__________________ CompositeLayerDesignManager BEGIN __________________ - var17=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 4 ) - lst1_count,lst1 = VScn.StringList( r" 10005/PART_10005 " ) - VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) - VCmd.SetStringValue( var17, r"SelectedPartIds", r"10005" ) - ret=VCmd.ExecuteCommand( var17, r"TransferPartsToInterfaceList" ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetGuStringValue( var17, r"PlyReinforcementLaminate", r"Ply" ) - VCmd.SetGuStringValue( var17, r"PlyReinforcementLaminate", r"Ply" ) - VCmd.SetStringValue( var17, r"MatDBFilter", r"User" ) - VCmd.SetStringValue( var17, r"MatTypeFilter", r"Ply" ) - VCmd.SetStringValue( var17, r"MatNameFilter", r"Ply_New_2" ) - VCmd.SetIntValue( var17, r"SameMatAssignmentOtherLayerFlag", 7 ) - VCmd.SetGuStringValue( var17, r"SameMatAssignmentOtherLayer", r"False" ) - ret=VCmd.ExecuteCommand( var17, r"TransferMaterialToInterfaceList" ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 3 ) - VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_4" ) - VCmd.SetDoubleValue( var17, r"LayerThickness", 0.111122 ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 4 ) - VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_5" ) - VCmd.SetDoubleValue( var17, r"LayerThickness", 0.111122 ) - VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) - VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_5" ) - VCmd.SetDoubleValue( var17, r"LayerAngle", 0. ) - VCmd.SetStringValue( var17, r"SelectedPartIds", r"10005" ) - ret=VCmd.ExecuteCommand( var17, r"TransferPartsToInterfaceList" ) - - -VCmd.Accept( var17 ) -VCmd.Quit( var17 ) +# -*- coding: utf-8 -*- +""" +Created on Fri Feb 23 11:04:14 2024 + +@author: SMO +""" + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Fri Feb 23 10:57:09 2024 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetActiveWindow( r"p1w1" ) + +import os +import json + +#SMO: read macro directory from temporary file +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbRTMFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbFilePath = linesplit[2] + +ret=VExpMngr.LoadFile(VdbFilePath,0) +ret=VE.ModelChange( "M @0" ) +lst1_count,lst1 = VScn.List( " P 10001:10044 " ) +VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var1, r"HideSelected" ) +lst1_count,lst1 = VScn.List( " P 10001:10044 " ) +VCmd.SetObjectArrayValue( var1, r"ExplorerSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var1, r"ShowSelected" ) + +for element in gaps: + + ###WRITE HERE + #__________________ CompositeLayerDesignManager BEGIN __________________ + var17=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"CompositeLayerDesignManager" ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 4 ) + lst1_count,lst1 = VScn.StringList( r" 10005/PART_10005 " ) + VCmd.SetStringArrayValue( var1, r"ListSelection", lst1_count, lst1 ) + VCmd.SetStringValue( var17, r"SelectedPartIds", r"10005" ) + ret=VCmd.ExecuteCommand( var17, r"TransferPartsToInterfaceList" ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetGuStringValue( var17, r"PlyReinforcementLaminate", r"Ply" ) + VCmd.SetGuStringValue( var17, r"PlyReinforcementLaminate", r"Ply" ) + VCmd.SetStringValue( var17, r"MatDBFilter", r"User" ) + VCmd.SetStringValue( var17, r"MatTypeFilter", r"Ply" ) + VCmd.SetStringValue( var17, r"MatNameFilter", r"Ply_New_2" ) + VCmd.SetIntValue( var17, r"SameMatAssignmentOtherLayerFlag", 7 ) + VCmd.SetGuStringValue( var17, r"SameMatAssignmentOtherLayer", r"False" ) + ret=VCmd.ExecuteCommand( var17, r"TransferMaterialToInterfaceList" ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 3 ) + VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_4" ) + VCmd.SetDoubleValue( var17, r"LayerThickness", 0.111122 ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetIntValue( var17, r"SelectedRowForAssignment", 4 ) + VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_5" ) + VCmd.SetDoubleValue( var17, r"LayerThickness", 0.111122 ) + VCmd.SetGuStringValue( var17, r"LayerLaminateListFlag", r"LayerList" ) + VCmd.SetGuStringValue( var17, r"LayerName", r"Layer_5" ) + VCmd.SetDoubleValue( var17, r"LayerAngle", 0. ) + VCmd.SetStringValue( var17, r"SelectedPartIds", r"10005" ) + ret=VCmd.ExecuteCommand( var17, r"TransferPartsToInterfaceList" ) + + +VCmd.Accept( var17 ) +VCmd.Quit( var17 ) diff --git a/PHASES/AUTOMATION_ML/utils/36_DistortionProcessConditions.py b/PHASES/AUTOMATION_ML/utils/36_DistortionProcessConditions.py index 8ed445c..db87d52 100644 --- a/PHASES/AUTOMATION_ML/utils/36_DistortionProcessConditions.py +++ b/PHASES/AUTOMATION_ML/utils/36_DistortionProcessConditions.py @@ -1,1393 +1,1393 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 15:01:03 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 14:57:11 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - -print(100*'_') -print('DISTORTION, Process Conditions. p36') -print('Reading list of variables') - -#External Variables file: -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - if 'DistortionSolverPath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - DistortionSolverPath = linesplit[2] - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) - - -#__________________ ProcessConditions BEGIN __________________ -var4=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"ProcessConditions" ) -VCmd.SetObjectValue( var4, r"CurrentModel", "M @0" ) -VCmd.SetIntValue( var4, r"CheckDatabase", 0 ) -#__________________ GenericMaterialEditor BEGIN __________________ -var5=VCmd.ActivateChild( var4, var4, r"GenericMaterialEditor_EntityCreation" ) -ret=VCmd.ExecuteCommand( var4, r"DbFileProcess" ) -VCmd.SetObjectValue( var4, r"Model", "M @0" ) -VCmd.SetIntValue( var4, r"EntCreationMode", 1 ) -VCmd.SetStringValue( var4, r"BCType", r"Locking" ) -VCmd.SetStringValue( var4, r"BcName", r"Locking_1" ) -ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) -lst1_count,lst1 = VScn.List( " N 10168 " ) -VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count , lst1 ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"locking_translation_z" ) -VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) -VCmd.SetStringValue( var5, r"PropertySValue", r"Fixed" ) -VCmd.SetStringValue( var5, r"SourceModuleToAdd", '' ) -ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) -ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) -VCmd.SetStringValue( var4, r"BcName", r"Locking_2" ) -VCmd.SetStringValue( var4, r"BCType", r"Pressure" ) -VCmd.SetStringValue( var4, r"BcName", r"Pressure_1" ) -ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) -VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) -lst1_count,lst1 = VScn.List( " S 2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 2084 2088 2092 2096 2100 2104 2108 2112 2116 2120 2124 2128 2132 2136 2140 2144 2148 2152 2156 2160 2164 2168 2172 2176 2180 2184 2188 2192 2196 2200 2204 2208 2212 2216 2220 2224 2228 2232 2236 2240 2244 2248 2252 2256 2260 2264 2268 2272 2276 2280 2284 2288 2292 2296 2300 2304 2308 2312 2316 2320 2324 2328 2332 2336 2340 2344 2348 2352 2356 2360 2364 2368 2372 2376 2380 2384 2388 2392 2396 2400 6004 6008 6012 6016 6020 6024 6028 6032 6036 6040 6044 6048 6052 6056 6060 6064 6068 6072 6076 6080 6084 6088 6092 6096 6100 6104 6108 6112 6116 6120 6124 6128 6132 6136 6140 6144 6148 6152 6156 6160 6164 6168 6172 6176 6180 6184 6188 6192 6196 6200 6204 6208 6212 6216 6220 6224 6228 6232 6236 6240 6244 6248 6252 6256 6260 6264 6268 6272 6276 6280 6284 6288 6292 6296 6300 6304 6308 6312 6316 6320 6324 6328 6332 6336 6340 6344 6348 6352 6356 6360 6364 6368 6372 6376 6380 6384 6388 6392 6396 6400 6404 6408 6412 6416 6420 6424 6428 6432 6436 6440 6444 6448 6452 6456 6460 6464 6468 6472 6476 6480 6484 6488 6492 6496 6500 6504 6508 6512 6516 6520 6524 6528 6532 6536 6540 6544 6548 6552 6556 6560 6564 6568 6572 6576 6580 6584 6588 6592 6596 6600 6604 6608 6612 6616 6620 6624 6628 6632 6636 6640 6644 6648 6652 6656 6660 6664 6668 6672 6676 6680 6684 6688 6692 6696 6700 6704 6708 6712 6716 6720 6724 6728 6732 6736 6740 6744 6748 6752 6756 6760 6764 6768 6772 6776 6780 6784 6788 6792 6796 6800 6804 6808 6812 6816 6820 6824 6828 6832 6836 6840 6844 6848 6852 6856 6860 6864 6868 6872 6876 6880 6884 6888 6892 6896 6900 6904 6908 6912 6916 6920 6924 6928 6932 6936 6940 6944 6948 6952 6956 6960 6964 6968 6972 6976 6980 6984 6988 6992 6996 7000 7004 7008 7012 7016 7020 7024 7028 7032 7036 7040 7044 7048 7052 7056 7060 7064 7068 7072 7076 7080 7084 7088 7092 7096 7100 7104 7108 7112 7116 7120 7124 7128 7132 7136 7140 7144 7148 7152 7156 7160 7164 7168 7172 7176 7180 7184 7188 7192 7196 7200 7204 7208 7212 7216 7220 7224 7228 7232 7236 7240 7244 7248 7252 7256 7260 7264 7268 7272 7276 7280 7284 7288 7292 7296 7300 7304 7308 7312 7316 7320 7324 7328 7332 7336 7340 7344 7348 7352 7356 7360 7364 7368 7372 7376 7380 7384 7388 7392 7396 7400 7404 7408 7412 7416 7420 7424 7428 7432 7436 7440 7444 7448 7452 7456 7460 7464 7468 7472 7476 7480 7484 7488 7492 7496 7500 7504 7508 7512 7516 7520 7524 7528 7532 7536 7540 7544 7548 7552 7556 7560 7564 7568 7572 7576 7580 7584 7588 7592 7596 7600 7604 7608 7612 7616 7620 7624 7628 7632 7636 7640 7644 7648 7652 7656 7660 7664 7668 7672 7676 7680 7684 7688 7692 7696 7700 7704 7708 7712 7716 7720 7724 7728 7732 7736 7740 7744 7748 7752 7756 7760 7764 7768 7772 7776 7780 7784 7788 7792 7796 7800 7804 7808 7812 7816 7820 7824 7828 7832 7836 7840 7844 7848 7852 7856 7860 7864 7868 7872 7876 7880 7884 7888 7892 7896 7900 7904 7908 7912 7916 7920 7924 7928 7932 7936 7940 7944 7948 7952 7956 7960 7964 7968 7972 7976 7980 7984 7988 7992 7996 8000 8004 8008 8012 8016 8020 8024 8028 8032 8036 8040 8044 8048 8052 8056 8060 8064 8068 8072 8076 8080 8084 8088 8092 8096 8100 8104 8108 8112 8116 8120 8124 8128 8132 8136 8140 8144 8148 8152 8156 8160 8164 8168 8172 8176 8180 8184 8188 8192 8196 8200 8204 8208 8212 8216 8220 8224 8228 8232 8236 8240 8244 8248 8252 8256 8260 8264 8268 8272 8276 8280 8284 8288 8292 8296 8300 8304 8308 8312 8316 8320 8324 8328 8332 8336 8340 8344 8348 8352 8356 8360 8364 8368 8372 8376 8380 8384 8388 8392 8396 8400 8404 8408 8412 8416 8420 8424 8428 8432 8436 8440 8444 8448 8452 8456 8460 8464 8468 8472 8476 8480 8484 8488 8492 8496 8500 8504 8508 8512 8516 8520 8524 8528 8532 8536 8540 8544 8548 8552 8556 8560 8564 8568 8572 8576 8580 8584 8588 8592 8596 8600 8604 8608 8612 8616 8620 8624 8628 8632 8636 8640 8644 8648 8652 8656 8660 8664 8668 8672 8676 8680 8684 8688 8692 8696 8700 8704 8708 8712 8716 8720 8724 8728 8732 8736 8740 8744 8748 8752 8756 8760 8764 8768 8772 8776 8780 8784 8788 8792 8796 8800 8804 8808 8812 8816 8820 8824 8828 8832 8836 8840 8844 8848 8852 8856 8860 8864 8868 8872 8876 8880 8884 8888 8892 8896 8900 8904 8908 8912 8916 8920 8924 8928 8932 8936 8940 8944 8948 8952 8956 8960 8964 8968 8972 8976 8980 8984 8988 8992 8996 9000 9004 9008 9012 9016 9020 9024 9028 9032 9036 9040 9044 9048 9052 9056 9060 9064 9068 9072 9076 9080 9084 9088 9092 9096 9100 9104 9108 9112 9116 9120 9124 9128 9132 9136 9140 9144 9148 9152 9156 9160 9164 9168 9172 9176 9180 9184 9188 9192 9196 9200 9204 9208 9212 9216 9220 9224 9228 9232 9236 9240 9244 9248 9252 9256 9260 9264 9268 9272 9276 9280 9284 9288 9292 9296 9300 9304 9308 9312 9316 9320 9324 9328 9332 9336 9340 9344 9348 9352 9356 9360 9364 9368 9372 9376 9380 9384 9388 9392 9396 9400 9404 9408 9412 9416 9420 9424 9428 9432 9436 9440 9444 9448 9452 9456 9460 9464 9468 9472 9476 9480 9484 9488 9492 9496 9500 9504 9508 9512 9516 9520 9524 9528 9532 9536 9540 9544 9548 9552 9556 9560 9564 9568 9572 9576 9580 9584 9588 9592 9596 9600 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2404 2408 2412 2416 2420 2424 2428 2432 2436 2440 2444 2448 2452 2456 2460 2464 2468 2472 2476 2480 2484 2488 2492 2496 2500 2504 2508 2512 2516 2520 2524 2528 2532 2536 2540 2544 2548 2552 2556 2560 2564 2568 2572 2576 2580 2584 2588 2592 2596 2600 2604 2608 2612 2616 2620 2624 2628 2632 2636 2640 2644 2648 2652 2656 2660 2664 2668 2672 2676 2680 2684 2688 2692 2696 2700 2704 2708 2712 2716 2720 2724 2728 2732 2736 2740 2744 2748 2752 2756 2760 2764 2768 2772 2776 2780 2784 2788 2792 2796 2800 2804 2808 2812 2816 2820 2824 2828 2832 2836 2840 2844 2848 2852 2856 2860 2864 2868 2872 2876 2880 2884 2888 2892 2896 2900 2904 2908 2912 2916 2920 2924 2928 2932 2936 2940 2944 2948 2952 2956 2960 2964 2968 2972 2976 2980 2984 2988 2992 2996 3000 3004 3008 3012 3016 3020 3024 3028 3032 3036 3040 3044 3048 3052 3056 3060 3064 3068 3072 3076 3080 3084 3088 3092 3096 3100 3104 3108 3112 3116 3120 3124 3128 3132 3136 3140 3144 3148 3152 3156 3160 3164 3168 3172 3176 3180 3184 3188 3192 3196 3200 3204 3208 3212 3216 3220 3224 3228 3232 3236 3240 3244 3248 3252 3256 3260 3264 3268 3272 3276 3280 3284 3288 3292 3296 3300 3304 3308 3312 3316 3320 3324 3328 3332 3336 3340 3344 3348 3352 3356 3360 3364 3368 3372 3376 3380 3384 3388 3392 3396 3400 3404 3408 3412 3416 3420 3424 3428 3432 3436 3440 3444 3448 3452 3456 3460 3464 3468 3472 3476 3480 3484 3488 3492 3496 3500 3504 3508 3512 3516 3520 3524 3528 3532 3536 3540 3544 3548 3552 3556 3560 3564 3568 3572 3576 3580 3584 3588 3592 3596 3600 3604 3608 3612 3616 3620 3624 3628 3632 3636 3640 3644 3648 3652 3656 3660 3664 3668 3672 3676 3680 3684 3688 3692 3696 3700 3704 3708 3712 3716 3720 3724 3728 3732 3736 3740 3744 3748 3752 3756 3760 3764 3768 3772 3776 3780 3784 3788 3792 3796 3800 3804 3808 3812 3816 3820 3824 3828 3832 3836 3840 3844 3848 3852 3856 3860 3864 3868 3872 3876 3880 3884 3888 3892 3896 3900 3904 3908 3912 3916 3920 3924 3928 3932 3936 3940 3944 3948 3952 3956 3960 3964 3968 3972 3976 3980 3984 3988 3992 3996 4000 4004 4008 4012 4016 4020 4024 4028 4032 4036 4040 4044 4048 4052 4056 4060 4064 4068 4072 4076 4080 4084 4088 4092 4096 4100 4104 4108 4112 4116 4120 4124 4128 4132 4136 4140 4144 4148 4152 4156 4160 4164 4168 4172 4176 4180 4184 4188 4192 4196 4200 4204 4208 4212 4216 4220 4224 4228 4232 4236 4240 4244 4248 4252 4256 4260 4264 4268 4272 4276 4280 4284 4288 4292 4296 4300 4304 4308 4312 4316 4320 4324 4328 4332 4336 4340 4344 4348 4352 4356 4360 4364 4368 4372 4376 4380 4384 4388 4392 4396 4400 4404 4408 4412 4416 4420 4424 4428 4432 4436 4440 4444 4448 4452 4456 4460 4464 4468 4472 4476 4480 4484 4488 4492 4496 4500 4504 4508 4512 4516 4520 4524 4528 4532 4536 4540 4544 4548 4552 4556 4560 4564 4568 4572 4576 4580 4584 4588 4592 4596 4600 4604 4608 4612 4616 4620 4624 4628 4632 4636 4640 4644 4648 4652 4656 4660 4664 4668 4672 4676 4680 4684 4688 4692 4696 4700 4704 4708 4712 4716 4720 4724 4728 4732 4736 4740 4744 4748 4752 4756 4760 4764 4768 4772 4776 4780 4784 4788 4792 4796 4800 4804 4808 4812 4816 4820 4824 4828 4832 4836 4840 4844 4848 4852 4856 4860 4864 4868 4872 4876 4880 4884 4888 4892 4896 4900 4904 4908 4912 4916 4920 4924 4928 4932 4936 4940 4944 4948 4952 4956 4960 4964 4968 4972 4976 4980 4984 4988 4992 4996 5000 5004 5008 5012 5016 5020 5024 5028 5032 5036 5040 5044 5048 5052 5056 5060 5064 5068 5072 5076 5080 5084 5088 5092 5096 5100 5104 5108 5112 5116 5120 5124 5128 5132 5136 5140 5144 5148 5152 5156 5160 5164 5168 5172 5176 5180 5184 5188 5192 5196 5200 5204 5208 5212 5216 5220 5224 5228 5232 5236 5240 5244 5248 5252 5256 5260 5264 5268 5272 5276 5280 5284 5288 5292 5296 5300 5304 5308 5312 5316 5320 5324 5328 5332 5336 5340 5344 5348 5352 5356 5360 5364 5368 5372 5376 5380 5384 5388 5392 5396 5400 5404 5408 5412 5416 5420 5424 5428 5432 5436 5440 5444 5448 5452 5456 5460 5464 5468 5472 5476 5480 5484 5488 5492 5496 5500 5504 5508 5512 5516 5520 5524 5528 5532 5536 5540 5544 5548 5552 5556 5560 5564 5568 5572 5576 5580 5584 5588 5592 5596 5600 5604 5608 5612 5616 5620 5624 5628 5632 5636 5640 5644 5648 5652 5656 5660 5664 5668 5672 5676 5680 5684 5688 5692 5696 5700 5704 5708 5712 5716 5720 5724 5728 5732 5736 5740 5744 5748 5752 5756 5760 5764 5768 5772 5776 5780 5784 5788 5792 5796 5800 5804 5808 5812 5816 5820 5824 5828 5832 5836 5840 5844 5848 5852 5856 5860 5864 5868 5872 5876 5880 5884 5888 5892 5896 5900 5904 5908 5912 5916 5920 5924 5928 5932 5936 5940 5944 5948 5952 5956 5960 5964 5968 5972 5976 5980 5984 5988 5992 5996 6000 | \ - N 10079 10078 10138:10139 10078 10081 10140 10138 10081 10083 10141 10140 10083 10085 10142 10141 10085 10087 10143 10142 10087 10089 10144 10143 10089 10091 10145 10144 10091 10093 10146 10145 10093 10095 10147 10146 10095 10097 10148 10147 10097 10099 10149 10148 10099 10101 10150 10149 10101 10103 10151 10150 10103 10105 10152 10151 10105 10107 10153 10152 10107 10109 10154 10153 10109 10111 10155 10154 10111 10113 10156 10155 10113 10115 10157 10156 10115 10117 10158 10157 10117 10119 10159 10158 10119 10121 10160 10159 10121 10123 10161 10160 10123 10125 10162 10161 10125 10127 10163 10162 10127 10129 10164 10163 10129 10131 10165 10164 10131 10133 10166 10165 10133 10135 10167 10166 10135 10137 10168 10167 10139 10138 10169:10170 \ - 10138 10140 10171 10169 10140:10141 10172 10171 10141:10142 \ - 10173 10172 10142:10143 10174 10173 10143:10144 10175 10174 10144:10145 \ - 10176 10175 10145:10146 10177 10176 10146:10147 10178 10177 10147:10148 \ - 10179 10178 10148:10149 10180 10179 10149:10150 10181 10180 10150:10151 \ - 10182 10181 10151:10152 10183 10182 10152:10153 10184 10183 10153:10154 \ - 10185 10184 10154:10155 10186 10185 10155:10156 10187 10186 10156:10157 \ - 10188 10187 10157:10158 10189 10188 10158:10159 10190 10189 10159:10160 \ - 10191 10190 10160:10161 10192 10191 10161:10162 10193 10192 10162:10163 \ - 10194 10193 10163:10164 10195 10194 10164:10165 10196 10195 10165:10166 \ - 10197 10196 10166:10167 10198 10197 10167:10168 10199 10198 10170 10169 10200:10201 \ - 10169 10171 10202 10200 10171:10172 10203 10202 10172:10173 \ - 10204 10203 10173:10174 10205 10204 10174:10175 10206 10205 10175:10176 \ - 10207 10206 10176:10177 10208 10207 10177:10178 10209 10208 10178:10179 \ - 10210 10209 10179:10180 10211 10210 10180:10181 10212 10211 10181:10182 \ - 10213 10212 10182:10183 10214 10213 10183:10184 10215 10214 10184:10185 \ - 10216 10215 10185:10186 10217 10216 10186:10187 10218 10217 10187:10188 \ - 10219 10218 10188:10189 10220 10219 10189:10190 10221 10220 10190:10191 \ - 10222 10221 10191:10192 10223 10222 10192:10193 10224 10223 10193:10194 \ - 10225 10224 10194:10195 10226 10225 10195:10196 10227 10226 10196:10197 \ - 10228 10227 10197:10198 10229 10228 10198:10199 10230 10229 10201 10200 11161:11162 \ - 10200 10202 11163 11161 10202:10203 11164 11163 10203:10204 \ - 11165 11164 10204:10205 11166 11165 10205:10206 11167 11166 10206:10207 \ - 11168 11167 10207:10208 11169 11168 10208:10209 11170 11169 10209:10210 \ - 11171 11170 10210:10211 11172 11171 10211:10212 11173 11172 10212:10213 \ - 11174 11173 10213:10214 11175 11174 10214:10215 11176 11175 10215:10216 \ - 11177 11176 10216:10217 11178 11177 10217:10218 11179 11178 10218:10219 \ - 11180 11179 10219:10220 11181 11180 10220:10221 11182 11181 10221:10222 \ - 11183 11182 10222:10223 11184 11183 10223:10224 11185 11184 10224:10225 \ - 11186 11185 10225:10226 11187 11186 10226:10227 11188 11187 10227:10228 \ - 11189 11188 10228:10229 11190 11189 10229:10230 11191 11190 11162 11161 11192:11193 \ - 11161 11163 11194 11192 11163:11164 11195 11194 11164:11165 \ - 11196 11195 11165:11166 11197 11196 11166:11167 11198 11197 11167:11168 \ - 11199 11198 11168:11169 11200 11199 11169:11170 11201 11200 11170:11171 \ - 11202 11201 11171:11172 11203 11202 11172:11173 11204 11203 11173:11174 \ - 11205 11204 11174:11175 11206 11205 11175:11176 11207 11206 11176:11177 \ - 11208 11207 11177:11178 11209 11208 11178:11179 11210 11209 11179:11180 \ - 11211 11210 11180:11181 11212 11211 11181:11182 11213 11212 11182:11183 \ - 11214 11213 11183:11184 11215 11214 11184:11185 11216 11215 11185:11186 \ - 11217 11216 11186:11187 11218 11217 11187:11188 11219 11218 11188:11189 \ - 11220 11219 11189:11190 11221 11220 11190:11191 11222 11221 11193 11192 11223:11224 \ - 11192 11194 11225 11223 11194:11195 11226 11225 11195:11196 \ - 11227 11226 11196:11197 11228 11227 11197:11198 11229 11228 11198:11199 \ - 11230 11229 11199:11200 11231 11230 11200:11201 11232 11231 11201:11202 \ - 11233 11232 11202:11203 11234 11233 11203:11204 11235 11234 11204:11205 \ - 11236 11235 11205:11206 11237 11236 11206:11207 11238 11237 11207:11208 \ - 11239 11238 11208:11209 11240 11239 11209:11210 11241 11240 11210:11211 \ - 11242 11241 11211:11212 11243 11242 11212:11213 11244 11243 11213:11214 \ - 11245 11244 11214:11215 11246 11245 11215:11216 11247 11246 11216:11217 \ - 11248 11247 11217:11218 11249 11248 11218:11219 11250 11249 11219:11220 \ - 11251 11250 11220:11221 11252 11251 11221:11222 11253 11252 11224 11223 11254:11255 \ - 11223 11225 11256 11254 11225:11226 11257 11256 11226:11227 \ - 11258 11257 11227:11228 11259 11258 11228:11229 11260 11259 11229:11230 \ - 11261 11260 11230:11231 11262 11261 11231:11232 11263 11262 11232:11233 \ - 11264 11263 11233:11234 11265 11264 11234:11235 11266 11265 11235:11236 \ - 11267 11266 11236:11237 11268 11267 11237:11238 11269 11268 11238:11239 \ - 11270 11269 11239:11240 11271 11270 11240:11241 11272 11271 11241:11242 \ - 11273 11272 11242:11243 11274 11273 11243:11244 11275 11274 11244:11245 \ - 11276 11275 11245:11246 11277 11276 11246:11247 11278 11277 11247:11248 \ - 11279 11278 11248:11249 11280 11279 11249:11250 11281 11280 11250:11251 \ - 11282 11281 11251:11252 11283 11282 11252:11253 11284 11283 11255 11254 11285:11286 \ - 11254 11256 11287 11285 11256:11257 11288 11287 11257:11258 \ - 11289 11288 11258:11259 11290 11289 11259:11260 11291 11290 11260:11261 \ - 11292 11291 11261:11262 11293 11292 11262:11263 11294 11293 11263:11264 \ - 11295 11294 11264:11265 11296 11295 11265:11266 11297 11296 11266:11267 \ - 11298 11297 11267:11268 11299 11298 11268:11269 11300 11299 11269:11270 \ - 11301 11300 11270:11271 11302 11301 11271:11272 11303 11302 11272:11273 \ - 11304 11303 11273:11274 11305 11304 11274:11275 11306 11305 11275:11276 \ - 11307 11306 11276:11277 11308 11307 11277:11278 11309 11308 11278:11279 \ - 11310 11309 11279:11280 11311 11310 11280:11281 11312 11311 11281:11282 \ - 11313 11312 11282:11283 11314 11313 11283:11284 11315 11314 11286 11285 11316:11317 \ - 11285 11287 11318 11316 11287:11288 11319 11318 11288:11289 \ - 11320 11319 11289:11290 11321 11320 11290:11291 11322 11321 11291:11292 \ - 11323 11322 11292:11293 11324 11323 11293:11294 11325 11324 11294:11295 \ - 11326 11325 11295:11296 11327 11326 11296:11297 11328 11327 11297:11298 \ - 11329 11328 11298:11299 11330 11329 11299:11300 11331 11330 11300:11301 \ - 11332 11331 11301:11302 11333 11332 11302:11303 11334 11333 11303:11304 \ - 11335 11334 11304:11305 11336 11335 11305:11306 11337 11336 11306:11307 \ - 11338 11337 11307:11308 11339 11338 11308:11309 11340 11339 11309:11310 \ - 11341 11340 11310:11311 11342 11341 11311:11312 11343 11342 11312:11313 \ - 11344 11343 11313:11314 11345 11344 11314:11315 11346 11345 11317 11316 11347:11348 \ - 11316 11318 11349 11347 11318:11319 11350 11349 11319:11320 \ - 11351 11350 11320:11321 11352 11351 11321:11322 11353 11352 11322:11323 \ - 11354 11353 11323:11324 11355 11354 11324:11325 11356 11355 11325:11326 \ - 11357 11356 11326:11327 11358 11357 11327:11328 11359 11358 11328:11329 \ - 11360 11359 11329:11330 11361 11360 11330:11331 11362 11361 11331:11332 \ - 11363 11362 11332:11333 11364 11363 11333:11334 11365 11364 11334:11335 \ - 11366 11365 11335:11336 11367 11366 11336:11337 11368 11367 11337:11338 \ - 11369 11368 11338:11339 11370 11369 11339:11340 11371 11370 11340:11341 \ - 11372 11371 11341:11342 11373 11372 11342:11343 11374 11373 11343:11344 \ - 11375 11374 11344:11345 11376 11375 11345:11346 11377 11376 11348 11347 11378:11379 \ - 11347 11349 11380 11378 11349:11350 11381 11380 11350:11351 \ - 11382 11381 11351:11352 11383 11382 11352:11353 11384 11383 11353:11354 \ - 11385 11384 11354:11355 11386 11385 11355:11356 11387 11386 11356:11357 \ - 11388 11387 11357:11358 11389 11388 11358:11359 11390 11389 11359:11360 \ - 11391 11390 11360:11361 11392 11391 11361:11362 11393 11392 11362:11363 \ - 11394 11393 11363:11364 11395 11394 11364:11365 11396 11395 11365:11366 \ - 11397 11396 11366:11367 11398 11397 11367:11368 11399 11398 11368:11369 \ - 11400 11399 11369:11370 11401 11400 11370:11371 11402 11401 11371:11372 \ - 11403 11402 11372:11373 11404 11403 11373:11374 11405 11404 11374:11375 \ - 11406 11405 11375:11376 11407 11406 11376:11377 11408 11407 11379 11378 11409:11410 \ - 11378 11380 11411 11409 11380:11381 11412 11411 11381:11382 \ - 11413 11412 11382:11383 11414 11413 11383:11384 11415 11414 11384:11385 \ - 11416 11415 11385:11386 11417 11416 11386:11387 11418 11417 11387:11388 \ - 11419 11418 11388:11389 11420 11419 11389:11390 11421 11420 11390:11391 \ - 11422 11421 11391:11392 11423 11422 11392:11393 11424 11423 11393:11394 \ - 11425 11424 11394:11395 11426 11425 11395:11396 11427 11426 11396:11397 \ - 11428 11427 11397:11398 11429 11428 11398:11399 11430 11429 11399:11400 \ - 11431 11430 11400:11401 11432 11431 11401:11402 11433 11432 11402:11403 \ - 11434 11433 11403:11404 11435 11434 11404:11405 11436 11435 11405:11406 \ - 11437 11436 11406:11407 11438 11437 11407:11408 11439 11438 11410 11409 11440:11441 \ - 11409 11411 11442 11440 11411:11412 11443 11442 11412:11413 \ - 11444 11443 11413:11414 11445 11444 11414:11415 11446 11445 11415:11416 \ - 11447 11446 11416:11417 11448 11447 11417:11418 11449 11448 11418:11419 \ - 11450 11449 11419:11420 11451 11450 11420:11421 11452 11451 11421:11422 \ - 11453 11452 11422:11423 11454 11453 11423:11424 11455 11454 11424:11425 \ - 11456 11455 11425:11426 11457 11456 11426:11427 11458 11457 11427:11428 \ - 11459 11458 11428:11429 11460 11459 11429:11430 11461 11460 11430:11431 \ - 11462 11461 11431:11432 11463 11462 11432:11433 11464 11463 11433:11434 \ - 11465 11464 11434:11435 11466 11465 11435:11436 11467 11466 11436:11437 \ - 11468 11467 11437:11438 11469 11468 11438:11439 11470 11469 11441 11440 11471:11472 \ - 11440 11442 11473 11471 11442:11443 11474 11473 11443:11444 \ - 11475 11474 11444:11445 11476 11475 11445:11446 11477 11476 11446:11447 \ - 11478 11477 11447:11448 11479 11478 11448:11449 11480 11479 11449:11450 \ - 11481 11480 11450:11451 11482 11481 11451:11452 11483 11482 11452:11453 \ - 11484 11483 11453:11454 11485 11484 11454:11455 11486 11485 11455:11456 \ - 11487 11486 11456:11457 11488 11487 11457:11458 11489 11488 11458:11459 \ - 11490 11489 11459:11460 11491 11490 11460:11461 11492 11491 11461:11462 \ - 11493 11492 11462:11463 11494 11493 11463:11464 11495 11494 11464:11465 \ - 11496 11495 11465:11466 11497 11496 11466:11467 11498 11497 11467:11468 \ - 11499 11498 11468:11469 11500 11499 11469:11470 11501 11500 11472 11471 11502:11503 \ - 11471 11473 11504 11502 11473:11474 11505 11504 11474:11475 \ - 11506 11505 11475:11476 11507 11506 11476:11477 11508 11507 11477:11478 \ - 11509 11508 11478:11479 11510 11509 11479:11480 11511 11510 11480:11481 \ - 11512 11511 11481:11482 11513 11512 11482:11483 11514 11513 11483:11484 \ - 11515 11514 11484:11485 11516 11515 11485:11486 11517 11516 11486:11487 \ - 11518 11517 11487:11488 11519 11518 11488:11489 11520 11519 11489:11490 \ - 11521 11520 11490:11491 11522 11521 11491:11492 11523 11522 11492:11493 \ - 11524 11523 11493:11494 11525 11524 11494:11495 11526 11525 11495:11496 \ - 11527 11526 11496:11497 11528 11527 11497:11498 11529 11528 11498:11499 \ - 11530 11529 11499:11500 11531 11530 11500:11501 11532 11531 11503 11502 11533:11534 \ - 11502 11504 11535 11533 11504:11505 11536 11535 11505:11506 \ - 11537 11536 11506:11507 11538 11537 11507:11508 11539 11538 11508:11509 \ - 11540 11539 11509:11510 11541 11540 11510:11511 11542 11541 11511:11512 \ - 11543 11542 11512:11513 11544 11543 11513:11514 11545 11544 11514:11515 \ - 11546 11545 11515:11516 11547 11546 11516:11517 11548 11547 11517:11518 \ - 11549 11548 11518:11519 11550 11549 11519:11520 11551 11550 11520:11521 \ - 11552 11551 11521:11522 11553 11552 11522:11523 11554 11553 11523:11524 \ - 11555 11554 11524:11525 11556 11555 11525:11526 11557 11556 11526:11527 \ - 11558 11557 11527:11528 11559 11558 11528:11529 11560 11559 11529:11530 \ - 11561 11560 11530:11531 11562 11561 11531:11532 11563 11562 11534 11533 11564:11565 \ - 11533 11535 11566 11564 11535:11536 11567 11566 11536:11537 \ - 11568 11567 11537:11538 11569 11568 11538:11539 11570 11569 11539:11540 \ - 11571 11570 11540:11541 11572 11571 11541:11542 11573 11572 11542:11543 \ - 11574 11573 11543:11544 11575 11574 11544:11545 11576 11575 11545:11546 \ - 11577 11576 11546:11547 11578 11577 11547:11548 11579 11578 11548:11549 \ - 11580 11579 11549:11550 11581 11580 11550:11551 11582 11581 11551:11552 \ - 11583 11582 11552:11553 11584 11583 11553:11554 11585 11584 11554:11555 \ - 11586 11585 11555:11556 11587 11586 11556:11557 11588 11587 11557:11558 \ - 11589 11588 11558:11559 11590 11589 11559:11560 11591 11590 11560:11561 \ - 11592 11591 11561:11562 11593 11592 11562:11563 11594 11593 11565 11564 11595:11596 \ - 11564 11566 11597 11595 11566:11567 11598 11597 11567:11568 \ - 11599 11598 11568:11569 11600 11599 11569:11570 11601 11600 11570:11571 \ - 11602 11601 11571:11572 11603 11602 11572:11573 11604 11603 11573:11574 \ - 11605 11604 11574:11575 11606 11605 11575:11576 11607 11606 11576:11577 \ - 11608 11607 11577:11578 11609 11608 11578:11579 11610 11609 11579:11580 \ - 11611 11610 11580:11581 11612 11611 11581:11582 11613 11612 11582:11583 \ - 11614 11613 11583:11584 11615 11614 11584:11585 11616 11615 11585:11586 \ - 11617 11616 11586:11587 11618 11617 11587:11588 11619 11618 11588:11589 \ - 11620 11619 11589:11590 11621 11620 11590:11591 11622 11621 11591:11592 \ - 11623 11622 11592:11593 11624 11623 11593:11594 11625 11624 11596 11595 11626:11627 \ - 11595 11597 11628 11626 11597:11598 11629 11628 11598:11599 \ - 11630 11629 11599:11600 11631 11630 11600:11601 11632 11631 11601:11602 \ - 11633 11632 11602:11603 11634 11633 11603:11604 11635 11634 11604:11605 \ - 11636 11635 11605:11606 11637 11636 11606:11607 11638 11637 11607:11608 \ - 11639 11638 11608:11609 11640 11639 11609:11610 11641 11640 11610:11611 \ - 11642 11641 11611:11612 11643 11642 11612:11613 11644 11643 11613:11614 \ - 11645 11644 11614:11615 11646 11645 11615:11616 11647 11646 11616:11617 \ - 11648 11647 11617:11618 11649 11648 11618:11619 11650 11649 11619:11620 \ - 11651 11650 11620:11621 11652 11651 11621:11622 11653 11652 11622:11623 \ - 11654 11653 11623:11624 11655 11654 11624:11625 11656 11655 11627 11626 11657:11658 \ - 11626 11628 11659 11657 11628:11629 11660 11659 11629:11630 \ - 11661 11660 11630:11631 11662 11661 11631:11632 11663 11662 11632:11633 \ - 11664 11663 11633:11634 11665 11664 11634:11635 11666 11665 11635:11636 \ - 11667 11666 11636:11637 11668 11667 11637:11638 11669 11668 11638:11639 \ - 11670 11669 11639:11640 11671 11670 11640:11641 11672 11671 11641:11642 \ - 11673 11672 11642:11643 11674 11673 11643:11644 11675 11674 11644:11645 \ - 11676 11675 11645:11646 11677 11676 11646:11647 11678 11677 11647:11648 \ - 11679 11678 11648:11649 11680 11679 11649:11650 11681 11680 11650:11651 \ - 11682 11681 11651:11652 11683 11682 11652:11653 11684 11683 11653:11654 \ - 11685 11684 11654:11655 11686 11685 11655:11656 11687 11686 11658 11657 11688:11689 \ - 11657 11659 11690 11688 11659:11660 11691 11690 11660:11661 \ - 11692 11691 11661:11662 11693 11692 11662:11663 11694 11693 11663:11664 \ - 11695 11694 11664:11665 11696 11695 11665:11666 11697 11696 11666:11667 \ - 11698 11697 11667:11668 11699 11698 11668:11669 11700 11699 11669:11670 \ - 11701 11700 11670:11671 11702 11701 11671:11672 11703 11702 11672:11673 \ - 11704 11703 11673:11674 11705 11704 11674:11675 11706 11705 11675:11676 \ - 11707 11706 11676:11677 11708 11707 11677:11678 11709 11708 11678:11679 \ - 11710 11709 11679:11680 11711 11710 11680:11681 11712 11711 11681:11682 \ - 11713 11712 11682:11683 11714 11713 11683:11684 11715 11714 11684:11685 \ - 11716 11715 11685:11686 11717 11716 11686:11687 11718 11717 11689 11688 11719:11720 \ - 11688 11690 11721 11719 11690:11691 11722 11721 11691:11692 \ - 11723 11722 11692:11693 11724 11723 11693:11694 11725 11724 11694:11695 \ - 11726 11725 11695:11696 11727 11726 11696:11697 11728 11727 11697:11698 \ - 11729 11728 11698:11699 11730 11729 11699:11700 11731 11730 11700:11701 \ - 11732 11731 11701:11702 11733 11732 11702:11703 11734 11733 11703:11704 \ - 11735 11734 11704:11705 11736 11735 11705:11706 11737 11736 11706:11707 \ - 11738 11737 11707:11708 11739 11738 11708:11709 11740 11739 11709:11710 \ - 11741 11740 11710:11711 11742 11741 11711:11712 11743 11742 11712:11713 \ - 11744 11743 11713:11714 11745 11744 11714:11715 11746 11745 11715:11716 \ - 11747 11746 11716:11717 11748 11747 11717:11718 11749 11748 11720 11719 11750:11751 \ - 11719 11721 11752 11750 11721:11722 11753 11752 11722:11723 \ - 11754 11753 11723:11724 11755 11754 11724:11725 11756 11755 11725:11726 \ - 11757 11756 11726:11727 11758 11757 11727:11728 11759 11758 11728:11729 \ - 11760 11759 11729:11730 11761 11760 11730:11731 11762 11761 11731:11732 \ - 11763 11762 11732:11733 11764 11763 11733:11734 11765 11764 11734:11735 \ - 11766 11765 11735:11736 11767 11766 11736:11737 11768 11767 11737:11738 \ - 11769 11768 11738:11739 11770 11769 11739:11740 11771 11770 11740:11741 \ - 11772 11771 11741:11742 11773 11772 11742:11743 11774 11773 11743:11744 \ - 11775 11774 11744:11745 11776 11775 11745:11746 11777 11776 11746:11747 \ - 11778 11777 11747:11748 11779 11778 11748:11749 11780 11779 11751 11750 11781:11782 \ - 11750 11752 11783 11781 11752:11753 11784 11783 11753:11754 \ - 11785 11784 11754:11755 11786 11785 11755:11756 11787 11786 11756:11757 \ - 11788 11787 11757:11758 11789 11788 11758:11759 11790 11789 11759:11760 \ - 11791 11790 11760:11761 11792 11791 11761:11762 11793 11792 11762:11763 \ - 11794 11793 11763:11764 11795 11794 11764:11765 11796 11795 11765:11766 \ - 11797 11796 11766:11767 11798 11797 11767:11768 11799 11798 11768:11769 \ - 11800 11799 11769:11770 11801 11800 11770:11771 11802 11801 11771:11772 \ - 11803 11802 11772:11773 11804 11803 11773:11774 11805 11804 11774:11775 \ - 11806 11805 11775:11776 11807 11806 11776:11777 11808 11807 11777:11778 \ - 11809 11808 11778:11779 11810 11809 11779:11780 11811 11810 11782 11781 11812:11813 \ - 11781 11783 11814 11812 11783:11784 11815 11814 11784:11785 \ - 11816 11815 11785:11786 11817 11816 11786:11787 11818 11817 11787:11788 \ - 11819 11818 11788:11789 11820 11819 11789:11790 11821 11820 11790:11791 \ - 11822 11821 11791:11792 11823 11822 11792:11793 11824 11823 11793:11794 \ - 11825 11824 11794:11795 11826 11825 11795:11796 11827 11826 11796:11797 \ - 11828 11827 11797:11798 11829 11828 11798:11799 11830 11829 11799:11800 \ - 11831 11830 11800:11801 11832 11831 11801:11802 11833 11832 11802:11803 \ - 11834 11833 11803:11804 11835 11834 11804:11805 11836 11835 11805:11806 \ - 11837 11836 11806:11807 11838 11837 11807:11808 11839 11838 11808:11809 \ - 11840 11839 11809:11810 11841 11840 11810:11811 11842 11841 11813 11812 11843:11844 \ - 11812 11814 11845 11843 11814:11815 11846 11845 11815:11816 \ - 11847 11846 11816:11817 11848 11847 11817:11818 11849 11848 11818:11819 \ - 11850 11849 11819:11820 11851 11850 11820:11821 11852 11851 11821:11822 \ - 11853 11852 11822:11823 11854 11853 11823:11824 11855 11854 11824:11825 \ - 11856 11855 11825:11826 11857 11856 11826:11827 11858 11857 11827:11828 \ - 11859 11858 11828:11829 11860 11859 11829:11830 11861 11860 11830:11831 \ - 11862 11861 11831:11832 11863 11862 11832:11833 11864 11863 11833:11834 \ - 11865 11864 11834:11835 11866 11865 11835:11836 11867 11866 11836:11837 \ - 11868 11867 11837:11838 11869 11868 11838:11839 11870 11869 11839:11840 \ - 11871 11870 11840:11841 11872 11871 11841:11842 11873 11872 11844 11843 11874:11875 \ - 11843 11845 11876 11874 11845:11846 11877 11876 11846:11847 \ - 11878 11877 11847:11848 11879 11878 11848:11849 11880 11879 11849:11850 \ - 11881 11880 11850:11851 11882 11881 11851:11852 11883 11882 11852:11853 \ - 11884 11883 11853:11854 11885 11884 11854:11855 11886 11885 11855:11856 \ - 11887 11886 11856:11857 11888 11887 11857:11858 11889 11888 11858:11859 \ - 11890 11889 11859:11860 11891 11890 11860:11861 11892 11891 11861:11862 \ - 11893 11892 11862:11863 11894 11893 11863:11864 11895 11894 11864:11865 \ - 11896 11895 11865:11866 11897 11896 11866:11867 11898 11897 11867:11868 \ - 11899 11898 11868:11869 11900 11899 11869:11870 11901 11900 11870:11871 \ - 11902 11901 11871:11872 11903 11902 11872:11873 11904 11903 11875 11874 11905:11906 \ - 11874 11876 11907 11905 11876:11877 11908 11907 11877:11878 \ - 11909 11908 11878:11879 11910 11909 11879:11880 11911 11910 11880:11881 \ - 11912 11911 11881:11882 11913 11912 11882:11883 11914 11913 11883:11884 \ - 11915 11914 11884:11885 11916 11915 11885:11886 11917 11916 11886:11887 \ - 11918 11917 11887:11888 11919 11918 11888:11889 11920 11919 11889:11890 \ - 11921 11920 11890:11891 11922 11921 11891:11892 11923 11922 11892:11893 \ - 11924 11923 11893:11894 11925 11924 11894:11895 11926 11925 11895:11896 \ - 11927 11926 11896:11897 11928 11927 11897:11898 11929 11928 11898:11899 \ - 11930 11929 11899:11900 11931 11930 11900:11901 11932 11931 11901:11902 \ - 11933 11932 11902:11903 11934 11933 11903:11904 11935 11934 11906 11905 11936:11937 \ - 11905 11907 11938 11936 11907:11908 11939 11938 11908:11909 \ - 11940 11939 11909:11910 11941 11940 11910:11911 11942 11941 11911:11912 \ - 11943 11942 11912:11913 11944 11943 11913:11914 11945 11944 11914:11915 \ - 11946 11945 11915:11916 11947 11946 11916:11917 11948 11947 11917:11918 \ - 11949 11948 11918:11919 11950 11949 11919:11920 11951 11950 11920:11921 \ - 11952 11951 11921:11922 11953 11952 11922:11923 11954 11953 11923:11924 \ - 11955 11954 11924:11925 11956 11955 11925:11926 11957 11956 11926:11927 \ - 11958 11957 11927:11928 11959 11958 11928:11929 11960 11959 11929:11930 \ - 11961 11960 11930:11931 11962 11961 11931:11932 11963 11962 11932:11933 \ - 11964 11963 11933:11934 11965 11964 11934:11935 11966 11965 11937 11936 11967:11968 \ - 11936 11938 11969 11967 11938:11939 11970 11969 11939:11940 \ - 11971 11970 11940:11941 11972 11971 11941:11942 11973 11972 11942:11943 \ - 11974 11973 11943:11944 11975 11974 11944:11945 11976 11975 11945:11946 \ - 11977 11976 11946:11947 11978 11977 11947:11948 11979 11978 11948:11949 \ - 11980 11979 11949:11950 11981 11980 11950:11951 11982 11981 11951:11952 \ - 11983 11982 11952:11953 11984 11983 11953:11954 11985 11984 11954:11955 \ - 11986 11985 11955:11956 11987 11986 11956:11957 11988 11987 11957:11958 \ - 11989 11988 11958:11959 11990 11989 11959:11960 11991 11990 11960:11961 \ - 11992 11991 11961:11962 11993 11992 11962:11963 11994 11993 11963:11964 \ - 11995 11994 11964:11965 11996 11995 11965:11966 11997 11996 11968 11967 11998:11999 \ - 11967 11969 12000 11998 11969:11970 12001 12000 11970:11971 \ - 12002 12001 11971:11972 12003 12002 11972:11973 12004 12003 11973:11974 \ - 12005 12004 11974:11975 12006 12005 11975:11976 12007 12006 11976:11977 \ - 12008 12007 11977:11978 12009 12008 11978:11979 12010 12009 11979:11980 \ - 12011 12010 11980:11981 12012 12011 11981:11982 12013 12012 11982:11983 \ - 12014 12013 11983:11984 12015 12014 11984:11985 12016 12015 11985:11986 \ - 12017 12016 11986:11987 12018 12017 11987:11988 12019 12018 11988:11989 \ - 12020 12019 11989:11990 12021 12020 11990:11991 12022 12021 11991:11992 \ - 12023 12022 11992:11993 12024 12023 11993:11994 12025 12024 11994:11995 \ - 12026 12025 11995:11996 12027 12026 11996:11997 12028 12027 11999 11998 12029:12030 \ - 11998 12000 12031 12029 12000:12001 12032 12031 12001:12002 \ - 12033 12032 12002:12003 12034 12033 12003:12004 12035 12034 12004:12005 \ - 12036 12035 12005:12006 12037 12036 12006:12007 12038 12037 12007:12008 \ - 12039 12038 12008:12009 12040 12039 12009:12010 12041 12040 12010:12011 \ - 12042 12041 12011:12012 12043 12042 12012:12013 12044 12043 12013:12014 \ - 12045 12044 12014:12015 12046 12045 12015:12016 12047 12046 12016:12017 \ - 12048 12047 12017:12018 12049 12048 12018:12019 12050 12049 12019:12020 \ - 12051 12050 12020:12021 12052 12051 12021:12022 12053 12052 12022:12023 \ - 12054 12053 12023:12024 12055 12054 12024:12025 12056 12055 12025:12026 \ - 12057 12056 12026:12027 12058 12057 12027:12028 12059 12058 12030 12029 12060:12061 \ - 12029 12031 12062 12060 12031:12032 12063 12062 12032:12033 \ - 12064 12063 12033:12034 12065 12064 12034:12035 12066 12065 12035:12036 \ - 12067 12066 12036:12037 12068 12067 12037:12038 12069 12068 12038:12039 \ - 12070 12069 12039:12040 12071 12070 12040:12041 12072 12071 12041:12042 \ - 12073 12072 12042:12043 12074 12073 12043:12044 12075 12074 12044:12045 \ - 12076 12075 12045:12046 12077 12076 12046:12047 12078 12077 12047:12048 \ - 12079 12078 12048:12049 12080 12079 12049:12050 12081 12080 12050:12051 \ - 12082 12081 12051:12052 12083 12082 12052:12053 12084 12083 12053:12054 \ - 12085 12084 12054:12055 12086 12085 12055:12056 12087 12086 12056:12057 \ - 12088 12087 12057:12058 12089 12088 12058:12059 12090 12089 10076:10079 \ - 10077 10080:10081 10078 10080 10082:10083 10081:10082 \ - 10084:10085 10083:10084 10086:10087 10085:10086 10088:10089 \ - 10087:10088 10090:10091 10089:10090 10092:10093 10091:10092 \ - 10094:10095 10093:10094 10096:10097 10095:10096 10098:10099 \ - 10097:10098 10100:10101 10099:10100 10102:10103 10101:10102 \ - 10104:10105 10103:10104 10106:10107 10105:10106 10108:10109 \ - 10107:10108 10110:10111 10109:10110 10112:10113 10111:10112 \ - 10114:10115 10113:10114 10116:10117 10115:10116 10118:10119 \ - 10117:10118 10120:10121 10119:10120 10122:10123 10121:10122 \ - 10124:10125 10123:10124 10126:10127 10125:10126 10128:10129 \ - 10127:10128 10130:10131 10129:10130 10132:10133 10131:10132 \ - 10134:10135 10133:10134 10136:10137 10135 10231:10234 \ - 10232 10235:10236 10233 10235 10237:10238 10236:10237 \ - 10239:10240 10238:10239 10241:10242 10240:10241 10243:10244 \ - 10242:10243 10245:10246 10244:10245 10247:10248 10246:10247 \ - 10249:10250 10248:10249 10251:10252 10250:10251 10253:10254 \ - 10252:10253 10255:10256 10254:10255 10257:10258 10256:10257 \ - 10259:10260 10258:10259 10261:10262 10260:10261 10263:10264 \ - 10262:10263 10265:10266 10264:10265 10267:10268 10266:10267 \ - 10269:10270 10268:10269 10271:10272 10270:10271 10273:10274 \ - 10272:10273 10275:10276 10274:10275 10277:10278 10276:10277 \ - 10279:10280 10278:10279 10281:10282 10280:10281 10283:10284 \ - 10282:10283 10285:10286 10284:10285 10287:10288 10286:10287 \ - 10289:10290 10288:10289 10291:10292 10290 10234 10233 10293:10294 \ - 10233 10236 10295 10293 10236 10238 10296 10295 10238 10240 10297 10296 10240 10242 10298 10297 10242 10244 10299 10298 10244 10246 10300 10299 10246 10248 10301 10300 10248 10250 10302 10301 10250 10252 10303 10302 10252 10254 10304 10303 10254 10256 10305 10304 10256 10258 10306 10305 10258 10260 10307 10306 10260 10262 10308 10307 10262 10264 10309 10308 10264 10266 10310 10309 10266 10268 10311 10310 10268 10270 10312 10311 10270 10272 10313 10312 10272 10274 10314 10313 10274 10276 10315 10314 10276 10278 10316 10315 10278 10280 10317 10316 10280 10282 10318 10317 10282 10284 10319 10318 10284 10286 10320 10319 10286 10288 10321 10320 10288 10290 10322 10321 10290 10292 10323 10322 10294 10293 10324:10325 \ - 10293 10295 10326 10324 10295:10296 10327 10326 10296:10297 \ - 10328 10327 10297:10298 10329 10328 10298:10299 10330 10329 10299:10300 \ - 10331 10330 10300:10301 10332 10331 10301:10302 10333 10332 10302:10303 \ - 10334 10333 10303:10304 10335 10334 10304:10305 10336 10335 10305:10306 \ - 10337 10336 10306:10307 10338 10337 10307:10308 10339 10338 10308:10309 \ - 10340 10339 10309:10310 10341 10340 10310:10311 10342 10341 10311:10312 \ - 10343 10342 10312:10313 10344 10343 10313:10314 10345 10344 10314:10315 \ - 10346 10345 10315:10316 10347 10346 10316:10317 10348 10347 10317:10318 \ - 10349 10348 10318:10319 10350 10349 10319:10320 10351 10350 10320:10321 \ - 10352 10351 10321:10322 10353 10352 10322:10323 10354 10353 10325 10324 10355:10356 \ - 10324 10326 10357 10355 10326:10327 10358 10357 10327:10328 \ - 10359 10358 10328:10329 10360 10359 10329:10330 10361 10360 10330:10331 \ - 10362 10361 10331:10332 10363 10362 10332:10333 10364 10363 10333:10334 \ - 10365 10364 10334:10335 10366 10365 10335:10336 10367 10366 10336:10337 \ - 10368 10367 10337:10338 10369 10368 10338:10339 10370 10369 10339:10340 \ - 10371 10370 10340:10341 10372 10371 10341:10342 10373 10372 10342:10343 \ - 10374 10373 10343:10344 10375 10374 10344:10345 10376 10375 10345:10346 \ - 10377 10376 10346:10347 10378 10377 10347:10348 10379 10378 10348:10349 \ - 10380 10379 10349:10350 10381 10380 10350:10351 10382 10381 10351:10352 \ - 10383 10382 10352:10353 10384 10383 10353:10354 10385 10384 10356 10355 10386:10387 \ - 10355 10357 10388 10386 10357:10358 10389 10388 10358:10359 \ - 10390 10389 10359:10360 10391 10390 10360:10361 10392 10391 10361:10362 \ - 10393 10392 10362:10363 10394 10393 10363:10364 10395 10394 10364:10365 \ - 10396 10395 10365:10366 10397 10396 10366:10367 10398 10397 10367:10368 \ - 10399 10398 10368:10369 10400 10399 10369:10370 10401 10400 10370:10371 \ - 10402 10401 10371:10372 10403 10402 10372:10373 10404 10403 10373:10374 \ - 10405 10404 10374:10375 10406 10405 10375:10376 10407 10406 10376:10377 \ - 10408 10407 10377:10378 10409 10408 10378:10379 10410 10409 10379:10380 \ - 10411 10410 10380:10381 10412 10411 10381:10382 10413 10412 10382:10383 \ - 10414 10413 10383:10384 10415 10414 10384:10385 10416 10415 10387 10386 10417:10418 \ - 10386 10388 10419 10417 10388:10389 10420 10419 10389:10390 \ - 10421 10420 10390:10391 10422 10421 10391:10392 10423 10422 10392:10393 \ - 10424 10423 10393:10394 10425 10424 10394:10395 10426 10425 10395:10396 \ - 10427 10426 10396:10397 10428 10427 10397:10398 10429 10428 10398:10399 \ - 10430 10429 10399:10400 10431 10430 10400:10401 10432 10431 10401:10402 \ - 10433 10432 10402:10403 10434 10433 10403:10404 10435 10434 10404:10405 \ - 10436 10435 10405:10406 10437 10436 10406:10407 10438 10437 10407:10408 \ - 10439 10438 10408:10409 10440 10439 10409:10410 10441 10440 10410:10411 \ - 10442 10441 10411:10412 10443 10442 10412:10413 10444 10443 10413:10414 \ - 10445 10444 10414:10415 10446 10445 10415:10416 10447 10446 10418 10417 10448:10449 \ - 10417 10419 10450 10448 10419:10420 10451 10450 10420:10421 \ - 10452 10451 10421:10422 10453 10452 10422:10423 10454 10453 10423:10424 \ - 10455 10454 10424:10425 10456 10455 10425:10426 10457 10456 10426:10427 \ - 10458 10457 10427:10428 10459 10458 10428:10429 10460 10459 10429:10430 \ - 10461 10460 10430:10431 10462 10461 10431:10432 10463 10462 10432:10433 \ - 10464 10463 10433:10434 10465 10464 10434:10435 10466 10465 10435:10436 \ - 10467 10466 10436:10437 10468 10467 10437:10438 10469 10468 10438:10439 \ - 10470 10469 10439:10440 10471 10470 10440:10441 10472 10471 10441:10442 \ - 10473 10472 10442:10443 10474 10473 10443:10444 10475 10474 10444:10445 \ - 10476 10475 10445:10446 10477 10476 10446:10447 10478 10477 10449 10448 10479:10480 \ - 10448 10450 10481 10479 10450:10451 10482 10481 10451:10452 \ - 10483 10482 10452:10453 10484 10483 10453:10454 10485 10484 10454:10455 \ - 10486 10485 10455:10456 10487 10486 10456:10457 10488 10487 10457:10458 \ - 10489 10488 10458:10459 10490 10489 10459:10460 10491 10490 10460:10461 \ - 10492 10491 10461:10462 10493 10492 10462:10463 10494 10493 10463:10464 \ - 10495 10494 10464:10465 10496 10495 10465:10466 10497 10496 10466:10467 \ - 10498 10497 10467:10468 10499 10498 10468:10469 10500 10499 10469:10470 \ - 10501 10500 10470:10471 10502 10501 10471:10472 10503 10502 10472:10473 \ - 10504 10503 10473:10474 10505 10504 10474:10475 10506 10505 10475:10476 \ - 10507 10506 10476:10477 10508 10507 10477:10478 10509 10508 10480 10479 10510:10511 \ - 10479 10481 10512 10510 10481:10482 10513 10512 10482:10483 \ - 10514 10513 10483:10484 10515 10514 10484:10485 10516 10515 10485:10486 \ - 10517 10516 10486:10487 10518 10517 10487:10488 10519 10518 10488:10489 \ - 10520 10519 10489:10490 10521 10520 10490:10491 10522 10521 10491:10492 \ - 10523 10522 10492:10493 10524 10523 10493:10494 10525 10524 10494:10495 \ - 10526 10525 10495:10496 10527 10526 10496:10497 10528 10527 10497:10498 \ - 10529 10528 10498:10499 10530 10529 10499:10500 10531 10530 10500:10501 \ - 10532 10531 10501:10502 10533 10532 10502:10503 10534 10533 10503:10504 \ - 10535 10534 10504:10505 10536 10535 10505:10506 10537 10536 10506:10507 \ - 10538 10537 10507:10508 10539 10538 10508:10509 10540 10539 10511 10510 10541:10542 \ - 10510 10512 10543 10541 10512:10513 10544 10543 10513:10514 \ - 10545 10544 10514:10515 10546 10545 10515:10516 10547 10546 10516:10517 \ - 10548 10547 10517:10518 10549 10548 10518:10519 10550 10549 10519:10520 \ - 10551 10550 10520:10521 10552 10551 10521:10522 10553 10552 10522:10523 \ - 10554 10553 10523:10524 10555 10554 10524:10525 10556 10555 10525:10526 \ - 10557 10556 10526:10527 10558 10557 10527:10528 10559 10558 10528:10529 \ - 10560 10559 10529:10530 10561 10560 10530:10531 10562 10561 10531:10532 \ - 10563 10562 10532:10533 10564 10563 10533:10534 10565 10564 10534:10535 \ - 10566 10565 10535:10536 10567 10566 10536:10537 10568 10567 10537:10538 \ - 10569 10568 10538:10539 10570 10569 10539:10540 10571 10570 10542 10541 10572:10573 \ - 10541 10543 10574 10572 10543:10544 10575 10574 10544:10545 \ - 10576 10575 10545:10546 10577 10576 10546:10547 10578 10577 10547:10548 \ - 10579 10578 10548:10549 10580 10579 10549:10550 10581 10580 10550:10551 \ - 10582 10581 10551:10552 10583 10582 10552:10553 10584 10583 10553:10554 \ - 10585 10584 10554:10555 10586 10585 10555:10556 10587 10586 10556:10557 \ - 10588 10587 10557:10558 10589 10588 10558:10559 10590 10589 10559:10560 \ - 10591 10590 10560:10561 10592 10591 10561:10562 10593 10592 10562:10563 \ - 10594 10593 10563:10564 10595 10594 10564:10565 10596 10595 10565:10566 \ - 10597 10596 10566:10567 10598 10597 10567:10568 10599 10598 10568:10569 \ - 10600 10599 10569:10570 10601 10600 10570:10571 10602 10601 10573 10572 10603:10604 \ - 10572 10574 10605 10603 10574:10575 10606 10605 10575:10576 \ - 10607 10606 10576:10577 10608 10607 10577:10578 10609 10608 10578:10579 \ - 10610 10609 10579:10580 10611 10610 10580:10581 10612 10611 10581:10582 \ - 10613 10612 10582:10583 10614 10613 10583:10584 10615 10614 10584:10585 \ - 10616 10615 10585:10586 10617 10616 10586:10587 10618 10617 10587:10588 \ - 10619 10618 10588:10589 10620 10619 10589:10590 10621 10620 10590:10591 \ - 10622 10621 10591:10592 10623 10622 10592:10593 10624 10623 10593:10594 \ - 10625 10624 10594:10595 10626 10625 10595:10596 10627 10626 10596:10597 \ - 10628 10627 10597:10598 10629 10628 10598:10599 10630 10629 10599:10600 \ - 10631 10630 10600:10601 10632 10631 10601:10602 10633 10632 10604 10603 10634:10635 \ - 10603 10605 10636 10634 10605:10606 10637 10636 10606:10607 \ - 10638 10637 10607:10608 10639 10638 10608:10609 10640 10639 10609:10610 \ - 10641 10640 10610:10611 10642 10641 10611:10612 10643 10642 10612:10613 \ - 10644 10643 10613:10614 10645 10644 10614:10615 10646 10645 10615:10616 \ - 10647 10646 10616:10617 10648 10647 10617:10618 10649 10648 10618:10619 \ - 10650 10649 10619:10620 10651 10650 10620:10621 10652 10651 10621:10622 \ - 10653 10652 10622:10623 10654 10653 10623:10624 10655 10654 10624:10625 \ - 10656 10655 10625:10626 10657 10656 10626:10627 10658 10657 10627:10628 \ - 10659 10658 10628:10629 10660 10659 10629:10630 10661 10660 10630:10631 \ - 10662 10661 10631:10632 10663 10662 10632:10633 10664 10663 10635 10634 10665:10666 \ - 10634 10636 10667 10665 10636:10637 10668 10667 10637:10638 \ - 10669 10668 10638:10639 10670 10669 10639:10640 10671 10670 10640:10641 \ - 10672 10671 10641:10642 10673 10672 10642:10643 10674 10673 10643:10644 \ - 10675 10674 10644:10645 10676 10675 10645:10646 10677 10676 10646:10647 \ - 10678 10677 10647:10648 10679 10678 10648:10649 10680 10679 10649:10650 \ - 10681 10680 10650:10651 10682 10681 10651:10652 10683 10682 10652:10653 \ - 10684 10683 10653:10654 10685 10684 10654:10655 10686 10685 10655:10656 \ - 10687 10686 10656:10657 10688 10687 10657:10658 10689 10688 10658:10659 \ - 10690 10689 10659:10660 10691 10690 10660:10661 10692 10691 10661:10662 \ - 10693 10692 10662:10663 10694 10693 10663:10664 10695 10694 10666 10665 10696:10697 \ - 10665 10667 10698 10696 10667:10668 10699 10698 10668:10669 \ - 10700 10699 10669:10670 10701 10700 10670:10671 10702 10701 10671:10672 \ - 10703 10702 10672:10673 10704 10703 10673:10674 10705 10704 10674:10675 \ - 10706 10705 10675:10676 10707 10706 10676:10677 10708 10707 10677:10678 \ - 10709 10708 10678:10679 10710 10709 10679:10680 10711 10710 10680:10681 \ - 10712 10711 10681:10682 10713 10712 10682:10683 10714 10713 10683:10684 \ - 10715 10714 10684:10685 10716 10715 10685:10686 10717 10716 10686:10687 \ - 10718 10717 10687:10688 10719 10718 10688:10689 10720 10719 10689:10690 \ - 10721 10720 10690:10691 10722 10721 10691:10692 10723 10722 10692:10693 \ - 10724 10723 10693:10694 10725 10724 10694:10695 10726 10725 10697 10696 10727:10728 \ - 10696 10698 10729 10727 10698:10699 10730 10729 10699:10700 \ - 10731 10730 10700:10701 10732 10731 10701:10702 10733 10732 10702:10703 \ - 10734 10733 10703:10704 10735 10734 10704:10705 10736 10735 10705:10706 \ - 10737 10736 10706:10707 10738 10737 10707:10708 10739 10738 10708:10709 \ - 10740 10739 10709:10710 10741 10740 10710:10711 10742 10741 10711:10712 \ - 10743 10742 10712:10713 10744 10743 10713:10714 10745 10744 10714:10715 \ - 10746 10745 10715:10716 10747 10746 10716:10717 10748 10747 10717:10718 \ - 10749 10748 10718:10719 10750 10749 10719:10720 10751 10750 10720:10721 \ - 10752 10751 10721:10722 10753 10752 10722:10723 10754 10753 10723:10724 \ - 10755 10754 10724:10725 10756 10755 10725:10726 10757 10756 10728 10727 10758:10759 \ - 10727 10729 10760 10758 10729:10730 10761 10760 10730:10731 \ - 10762 10761 10731:10732 10763 10762 10732:10733 10764 10763 10733:10734 \ - 10765 10764 10734:10735 10766 10765 10735:10736 10767 10766 10736:10737 \ - 10768 10767 10737:10738 10769 10768 10738:10739 10770 10769 10739:10740 \ - 10771 10770 10740:10741 10772 10771 10741:10742 10773 10772 10742:10743 \ - 10774 10773 10743:10744 10775 10774 10744:10745 10776 10775 10745:10746 \ - 10777 10776 10746:10747 10778 10777 10747:10748 10779 10778 10748:10749 \ - 10780 10779 10749:10750 10781 10780 10750:10751 10782 10781 10751:10752 \ - 10783 10782 10752:10753 10784 10783 10753:10754 10785 10784 10754:10755 \ - 10786 10785 10755:10756 10787 10786 10756:10757 10788 10787 10759 10758 10789:10790 \ - 10758 10760 10791 10789 10760:10761 10792 10791 10761:10762 \ - 10793 10792 10762:10763 10794 10793 10763:10764 10795 10794 10764:10765 \ - 10796 10795 10765:10766 10797 10796 10766:10767 10798 10797 10767:10768 \ - 10799 10798 10768:10769 10800 10799 10769:10770 10801 10800 10770:10771 \ - 10802 10801 10771:10772 10803 10802 10772:10773 10804 10803 10773:10774 \ - 10805 10804 10774:10775 10806 10805 10775:10776 10807 10806 10776:10777 \ - 10808 10807 10777:10778 10809 10808 10778:10779 10810 10809 10779:10780 \ - 10811 10810 10780:10781 10812 10811 10781:10782 10813 10812 10782:10783 \ - 10814 10813 10783:10784 10815 10814 10784:10785 10816 10815 10785:10786 \ - 10817 10816 10786:10787 10818 10817 10787:10788 10819 10818 10790 10789 10820:10821 \ - 10789 10791 10822 10820 10791:10792 10823 10822 10792:10793 \ - 10824 10823 10793:10794 10825 10824 10794:10795 10826 10825 10795:10796 \ - 10827 10826 10796:10797 10828 10827 10797:10798 10829 10828 10798:10799 \ - 10830 10829 10799:10800 10831 10830 10800:10801 10832 10831 10801:10802 \ - 10833 10832 10802:10803 10834 10833 10803:10804 10835 10834 10804:10805 \ - 10836 10835 10805:10806 10837 10836 10806:10807 10838 10837 10807:10808 \ - 10839 10838 10808:10809 10840 10839 10809:10810 10841 10840 10810:10811 \ - 10842 10841 10811:10812 10843 10842 10812:10813 10844 10843 10813:10814 \ - 10845 10844 10814:10815 10846 10845 10815:10816 10847 10846 10816:10817 \ - 10848 10847 10817:10818 10849 10848 10818:10819 10850 10849 10821 10820 10851:10852 \ - 10820 10822 10853 10851 10822:10823 10854 10853 10823:10824 \ - 10855 10854 10824:10825 10856 10855 10825:10826 10857 10856 10826:10827 \ - 10858 10857 10827:10828 10859 10858 10828:10829 10860 10859 10829:10830 \ - 10861 10860 10830:10831 10862 10861 10831:10832 10863 10862 10832:10833 \ - 10864 10863 10833:10834 10865 10864 10834:10835 10866 10865 10835:10836 \ - 10867 10866 10836:10837 10868 10867 10837:10838 10869 10868 10838:10839 \ - 10870 10869 10839:10840 10871 10870 10840:10841 10872 10871 10841:10842 \ - 10873 10872 10842:10843 10874 10873 10843:10844 10875 10874 10844:10845 \ - 10876 10875 10845:10846 10877 10876 10846:10847 10878 10877 10847:10848 \ - 10879 10878 10848:10849 10880 10879 10849:10850 10881 10880 10852 10851 10882:10883 \ - 10851 10853 10884 10882 10853:10854 10885 10884 10854:10855 \ - 10886 10885 10855:10856 10887 10886 10856:10857 10888 10887 10857:10858 \ - 10889 10888 10858:10859 10890 10889 10859:10860 10891 10890 10860:10861 \ - 10892 10891 10861:10862 10893 10892 10862:10863 10894 10893 10863:10864 \ - 10895 10894 10864:10865 10896 10895 10865:10866 10897 10896 10866:10867 \ - 10898 10897 10867:10868 10899 10898 10868:10869 10900 10899 10869:10870 \ - 10901 10900 10870:10871 10902 10901 10871:10872 10903 10902 10872:10873 \ - 10904 10903 10873:10874 10905 10904 10874:10875 10906 10905 10875:10876 \ - 10907 10906 10876:10877 10908 10907 10877:10878 10909 10908 10878:10879 \ - 10910 10909 10879:10880 10911 10910 10880:10881 10912 10911 10883 10882 10913:10914 \ - 10882 10884 10915 10913 10884:10885 10916 10915 10885:10886 \ - 10917 10916 10886:10887 10918 10917 10887:10888 10919 10918 10888:10889 \ - 10920 10919 10889:10890 10921 10920 10890:10891 10922 10921 10891:10892 \ - 10923 10922 10892:10893 10924 10923 10893:10894 10925 10924 10894:10895 \ - 10926 10925 10895:10896 10927 10926 10896:10897 10928 10927 10897:10898 \ - 10929 10928 10898:10899 10930 10929 10899:10900 10931 10930 10900:10901 \ - 10932 10931 10901:10902 10933 10932 10902:10903 10934 10933 10903:10904 \ - 10935 10934 10904:10905 10936 10935 10905:10906 10937 10936 10906:10907 \ - 10938 10937 10907:10908 10939 10938 10908:10909 10940 10939 10909:10910 \ - 10941 10940 10910:10911 10942 10941 10911:10912 10943 10942 10914 10913 10944:10945 \ - 10913 10915 10946 10944 10915:10916 10947 10946 10916:10917 \ - 10948 10947 10917:10918 10949 10948 10918:10919 10950 10949 10919:10920 \ - 10951 10950 10920:10921 10952 10951 10921:10922 10953 10952 10922:10923 \ - 10954 10953 10923:10924 10955 10954 10924:10925 10956 10955 10925:10926 \ - 10957 10956 10926:10927 10958 10957 10927:10928 10959 10958 10928:10929 \ - 10960 10959 10929:10930 10961 10960 10930:10931 10962 10961 10931:10932 \ - 10963 10962 10932:10933 10964 10963 10933:10934 10965 10964 10934:10935 \ - 10966 10965 10935:10936 10967 10966 10936:10937 10968 10967 10937:10938 \ - 10969 10968 10938:10939 10970 10969 10939:10940 10971 10970 10940:10941 \ - 10972 10971 10941:10942 10973 10972 10942:10943 10974 10973 10945 10944 10975:10976 \ - 10944 10946 10977 10975 10946:10947 10978 10977 10947:10948 \ - 10979 10978 10948:10949 10980 10979 10949:10950 10981 10980 10950:10951 \ - 10982 10981 10951:10952 10983 10982 10952:10953 10984 10983 10953:10954 \ - 10985 10984 10954:10955 10986 10985 10955:10956 10987 10986 10956:10957 \ - 10988 10987 10957:10958 10989 10988 10958:10959 10990 10989 10959:10960 \ - 10991 10990 10960:10961 10992 10991 10961:10962 10993 10992 10962:10963 \ - 10994 10993 10963:10964 10995 10994 10964:10965 10996 10995 10965:10966 \ - 10997 10996 10966:10967 10998 10997 10967:10968 10999 10998 10968:10969 \ - 11000 10999 10969:10970 11001 11000 10970:10971 11002 11001 10971:10972 \ - 11003 11002 10972:10973 11004 11003 10973:10974 11005 11004 10976 10975 11006:11007 \ - 10975 10977 11008 11006 10977:10978 11009 11008 10978:10979 \ - 11010 11009 10979:10980 11011 11010 10980:10981 11012 11011 10981:10982 \ - 11013 11012 10982:10983 11014 11013 10983:10984 11015 11014 10984:10985 \ - 11016 11015 10985:10986 11017 11016 10986:10987 11018 11017 10987:10988 \ - 11019 11018 10988:10989 11020 11019 10989:10990 11021 11020 10990:10991 \ - 11022 11021 10991:10992 11023 11022 10992:10993 11024 11023 10993:10994 \ - 11025 11024 10994:10995 11026 11025 10995:10996 11027 11026 10996:10997 \ - 11028 11027 10997:10998 11029 11028 10998:10999 11030 11029 10999:11000 \ - 11031 11030 11000:11001 11032 11031 11001:11002 11033 11032 11002:11003 \ - 11034 11033 11003:11004 11035 11034 11004:11005 11036 11035 11007 11006 11037:11038 \ - 11006 11008 11039 11037 11008:11009 11040 11039 11009:11010 \ - 11041 11040 11010:11011 11042 11041 11011:11012 11043 11042 11012:11013 \ - 11044 11043 11013:11014 11045 11044 11014:11015 11046 11045 11015:11016 \ - 11047 11046 11016:11017 11048 11047 11017:11018 11049 11048 11018:11019 \ - 11050 11049 11019:11020 11051 11050 11020:11021 11052 11051 11021:11022 \ - 11053 11052 11022:11023 11054 11053 11023:11024 11055 11054 11024:11025 \ - 11056 11055 11025:11026 11057 11056 11026:11027 11058 11057 11027:11028 \ - 11059 11058 11028:11029 11060 11059 11029:11030 11061 11060 11030:11031 \ - 11062 11061 11031:11032 11063 11062 11032:11033 11064 11063 11033:11034 \ - 11065 11064 11034:11035 11066 11065 11035:11036 11067 11066 11038 11037 11068:11069 \ - 11037 11039 11070 11068 11039:11040 11071 11070 11040:11041 \ - 11072 11071 11041:11042 11073 11072 11042:11043 11074 11073 11043:11044 \ - 11075 11074 11044:11045 11076 11075 11045:11046 11077 11076 11046:11047 \ - 11078 11077 11047:11048 11079 11078 11048:11049 11080 11079 11049:11050 \ - 11081 11080 11050:11051 11082 11081 11051:11052 11083 11082 11052:11053 \ - 11084 11083 11053:11054 11085 11084 11054:11055 11086 11085 11055:11056 \ - 11087 11086 11056:11057 11088 11087 11057:11058 11089 11088 11058:11059 \ - 11090 11089 11059:11060 11091 11090 11060:11061 11092 11091 11061:11062 \ - 11093 11092 11062:11063 11094 11093 11063:11064 11095 11094 11064:11065 \ - 11096 11095 11065:11066 11097 11096 11066:11067 11098 11097 11069 11068 11099:11100 \ - 11068 11070 11101 11099 11070:11071 11102 11101 11071:11072 \ - 11103 11102 11072:11073 11104 11103 11073:11074 11105 11104 11074:11075 \ - 11106 11105 11075:11076 11107 11106 11076:11077 11108 11107 11077:11078 \ - 11109 11108 11078:11079 11110 11109 11079:11080 11111 11110 11080:11081 \ - 11112 11111 11081:11082 11113 11112 11082:11083 11114 11113 11083:11084 \ - 11115 11114 11084:11085 11116 11115 11085:11086 11117 11116 11086:11087 \ - 11118 11117 11087:11088 11119 11118 11088:11089 11120 11119 11089:11090 \ - 11121 11120 11090:11091 11122 11121 11091:11092 11123 11122 11092:11093 \ - 11124 11123 11093:11094 11125 11124 11094:11095 11126 11125 11095:11096 \ - 11127 11126 11096:11097 11128 11127 11097:11098 11129 11128 11100 11099 11130:11131 \ - 11099 11101 11132 11130 11101:11102 11133 11132 11102:11103 \ - 11134 11133 11103:11104 11135 11134 11104:11105 11136 11135 11105:11106 \ - 11137 11136 11106:11107 11138 11137 11107:11108 11139 11138 11108:11109 \ - 11140 11139 11109:11110 11141 11140 11110:11111 11142 11141 11111:11112 \ - 11143 11142 11112:11113 11144 11143 11113:11114 11145 11144 11114:11115 \ - 11146 11145 11115:11116 11147 11146 11116:11117 11148 11147 11117:11118 \ - 11149 11148 11118:11119 11150 11149 11119:11120 11151 11150 11120:11121 \ - 11152 11151 11121:11122 11153 11152 11122:11123 11154 11153 11123:11124 \ - 11155 11154 11124:11125 11156 11155 11125:11126 11157 11156 11126:11127 \ - 11158 11157 11127:11128 11159 11158 11128:11129 11160 11159 11131 11130 10077 10076 11130 11132 10080 10077 11132:11133 \ - 10082 10080 11133:11134 10084 10082 11134:11135 10086 10084 11135:11136 \ - 10088 10086 11136:11137 10090 10088 11137:11138 10092 10090 11138:11139 \ - 10094 10092 11139:11140 10096 10094 11140:11141 10098 10096 11141:11142 \ - 10100 10098 11142:11143 10102 10100 11143:11144 10104 10102 11144:11145 \ - 10106 10104 11145:11146 10108 10106 11146:11147 10110 10108 11147:11148 \ - 10112 10110 11148:11149 10114 10112 11149:11150 10116 10114 11150:11151 \ - 10118 10116 11151:11152 10120 10118 11152:11153 10122 10120 11153:11154 \ - 10124 10122 11154:11155 10126 10124 11155:11156 10128 10126 11156:11157 \ - 10130 10128 11157:11158 10132 10130 11158:11159 10134 10132 11159:11160 \ - 10136 10134 " ) -VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) -VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) -VCmd.SetStringValue( var5, r"PropertyValueUnit", r"bar" ) -ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) -VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) -VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) -VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) -VCmd.SetStringValue( var5, r"PropertySValue", r" 5" ) -ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) -VCmd.SetStringValue( var4, r"BcName", r"Pressure_2" ) -VCmd.SetStringValue( var4, r"BCType", r"Normal Locking" ) -VCmd.SetStringValue( var4, r"BcName", r"Normal Locking_2" ) -ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) -VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) -lst1_count,lst1 = VScn.List( " S 2041 2045 2049 2053 2057 2061 2065 2069 2073 2077 2081 2085 2089 2093 2097 2101 2105 2109 2113 2117 2121 2125 2129 2133 2137 2141 2145 2149 2153 2157 2161 2165 2169 2173 2177 2181 2185 2189 2193 2197 2201 2205 2209 2213 2217 2221 2225 2229 2233 2237 2241 2245 2249 2253 2257 2261 2265 2269 2273 2277 2281 2285 2289 2293 2297 2301 2305 2309 2313 2317 2321 2325 2329 2333 2337 2341 2345 2349 2353 2357 2361 2365 2369 2373 2377 2381 2385 2389 2393 2397 6001 6005 6009 6013 6017 6021 6025 6029 6033 6037 6041 6045 6049 6053 6057 6061 6065 6069 6073 6077 6081 6085 6089 6093 6097 6101 6105 6109 6113 6117 6121 6125 6129 6133 6137 6141 6145 6149 6153 6157 6161 6165 6169 6173 6177 6181 6185 6189 6193 6197 6201 6205 6209 6213 6217 6221 6225 6229 6233 6237 6241 6245 6249 6253 6257 6261 6265 6269 6273 6277 6281 6285 6289 6293 6297 6301 6305 6309 6313 6317 6321 6325 6329 6333 6337 6341 6345 6349 6353 6357 6361 6365 6369 6373 6377 6381 6385 6389 6393 6397 6401 6405 6409 6413 6417 6421 6425 6429 6433 6437 6441 6445 6449 6453 6457 6461 6465 6469 6473 6477 6481 6485 6489 6493 6497 6501 6505 6509 6513 6517 6521 6525 6529 6533 6537 6541 6545 6549 6553 6557 6561 6565 6569 6573 6577 6581 6585 6589 6593 6597 6601 6605 6609 6613 6617 6621 6625 6629 6633 6637 6641 6645 6649 6653 6657 6661 6665 6669 6673 6677 6681 6685 6689 6693 6697 6701 6705 6709 6713 6717 6721 6725 6729 6733 6737 6741 6745 6749 6753 6757 6761 6765 6769 6773 6777 6781 6785 6789 6793 6797 6801 6805 6809 6813 6817 6821 6825 6829 6833 6837 6841 6845 6849 6853 6857 6861 6865 6869 6873 6877 6881 6885 6889 6893 6897 6901 6905 6909 6913 6917 6921 6925 6929 6933 6937 6941 6945 6949 6953 6957 6961 6965 6969 6973 6977 6981 6985 6989 6993 6997 7001 7005 7009 7013 7017 7021 7025 7029 7033 7037 7041 7045 7049 7053 7057 7061 7065 7069 7073 7077 7081 7085 7089 7093 7097 7101 7105 7109 7113 7117 7121 7125 7129 7133 7137 7141 7145 7149 7153 7157 7161 7165 7169 7173 7177 7181 7185 7189 7193 7197 7201 7205 7209 7213 7217 7221 7225 7229 7233 7237 7241 7245 7249 7253 7257 7261 7265 7269 7273 7277 7281 7285 7289 7293 7297 7301 7305 7309 7313 7317 7321 7325 7329 7333 7337 7341 7345 7349 7353 7357 7361 7365 7369 7373 7377 7381 7385 7389 7393 7397 7401 7405 7409 7413 7417 7421 7425 7429 7433 7437 7441 7445 7449 7453 7457 7461 7465 7469 7473 7477 7481 7485 7489 7493 7497 7501 7505 7509 7513 7517 7521 7525 7529 7533 7537 7541 7545 7549 7553 7557 7561 7565 7569 7573 7577 7581 7585 7589 7593 7597 7601 7605 7609 7613 7617 7621 7625 7629 7633 7637 7641 7645 7649 7653 7657 7661 7665 7669 7673 7677 7681 7685 7689 7693 7697 7701 7705 7709 7713 7717 7721 7725 7729 7733 7737 7741 7745 7749 7753 7757 7761 7765 7769 7773 7777 7781 7785 7789 7793 7797 7801 7805 7809 7813 7817 7821 7825 7829 7833 7837 7841 7845 7849 7853 7857 7861 7865 7869 7873 7877 7881 7885 7889 7893 7897 7901 7905 7909 7913 7917 7921 7925 7929 7933 7937 7941 7945 7949 7953 7957 7961 7965 7969 7973 7977 7981 7985 7989 7993 7997 8001 8005 8009 8013 8017 8021 8025 8029 8033 8037 8041 8045 8049 8053 8057 8061 8065 8069 8073 8077 8081 8085 8089 8093 8097 8101 8105 8109 8113 8117 8121 8125 8129 8133 8137 8141 8145 8149 8153 8157 8161 8165 8169 8173 8177 8181 8185 8189 8193 8197 8201 8205 8209 8213 8217 8221 8225 8229 8233 8237 8241 8245 8249 8253 8257 8261 8265 8269 8273 8277 8281 8285 8289 8293 8297 8301 8305 8309 8313 8317 8321 8325 8329 8333 8337 8341 8345 8349 8353 8357 8361 8365 8369 8373 8377 8381 8385 8389 8393 8397 8401 8405 8409 8413 8417 8421 8425 8429 8433 8437 8441 8445 8449 8453 8457 8461 8465 8469 8473 8477 8481 8485 8489 8493 8497 8501 8505 8509 8513 8517 8521 8525 8529 8533 8537 8541 8545 8549 8553 8557 8561 8565 8569 8573 8577 8581 8585 8589 8593 8597 8601 8605 8609 8613 8617 8621 8625 8629 8633 8637 8641 8645 8649 8653 8657 8661 8665 8669 8673 8677 8681 8685 8689 8693 8697 8701 8705 8709 8713 8717 8721 8725 8729 8733 8737 8741 8745 8749 8753 8757 8761 8765 8769 8773 8777 8781 8785 8789 8793 8797 8801 8805 8809 8813 8817 8821 8825 8829 8833 8837 8841 8845 8849 8853 8857 8861 8865 8869 8873 8877 8881 8885 8889 8893 8897 8901 8905 8909 8913 8917 8921 8925 8929 8933 8937 8941 8945 8949 8953 8957 8961 8965 8969 8973 8977 8981 8985 8989 8993 8997 9001 9005 9009 9013 9017 9021 9025 9029 9033 9037 9041 9045 9049 9053 9057 9061 9065 9069 9073 9077 9081 9085 9089 9093 9097 9101 9105 9109 9113 9117 9121 9125 9129 9133 9137 9141 9145 9149 9153 9157 9161 9165 9169 9173 9177 9181 9185 9189 9193 9197 9201 9205 9209 9213 9217 9221 9225 9229 9233 9237 9241 9245 9249 9253 9257 9261 9265 9269 9273 9277 9281 9285 9289 9293 9297 9301 9305 9309 9313 9317 9321 9325 9329 9333 9337 9341 9345 9349 9353 9357 9361 9365 9369 9373 9377 9381 9385 9389 9393 9397 9401 9405 9409 9413 9417 9421 9425 9429 9433 9437 9441 9445 9449 9453 9457 9461 9465 9469 9473 9477 9481 9485 9489 9493 9497 9501 9505 9509 9513 9517 9521 9525 9529 9533 9537 9541 9545 9549 9553 9557 9561 9565 9569 9573 9577 9581 9585 9589 9593 9597 1921 1925 1929 1933 1937 1941 1945 1949 1953 1957 1961 1965 1969 1973 1977 1981 1985 1989 1993 1997 2001 2005 2009 2013 2017 2021 2025 2029 2033 2037 2401 2405 2409 2413 2417 2421 2425 2429 2433 2437 2441 2445 2449 2453 2457 2461 2465 2469 2473 2477 2481 2485 2489 2493 2497 2501 2505 2509 2513 2517 2521 2525 2529 2533 2537 2541 2545 2549 2553 2557 2561 2565 2569 2573 2577 2581 2585 2589 2593 2597 2601 2605 2609 2613 2617 2621 2625 2629 2633 2637 2641 2645 2649 2653 2657 2661 2665 2669 2673 2677 2681 2685 2689 2693 2697 2701 2705 2709 2713 2717 2721 2725 2729 2733 2737 2741 2745 2749 2753 2757 2761 2765 2769 2773 2777 2781 2785 2789 2793 2797 2801 2805 2809 2813 2817 2821 2825 2829 2833 2837 2841 2845 2849 2853 2857 2861 2865 2869 2873 2877 2881 2885 2889 2893 2897 2901 2905 2909 2913 2917 2921 2925 2929 2933 2937 2941 2945 2949 2953 2957 2961 2965 2969 2973 2977 2981 2985 2989 2993 2997 3001 3005 3009 3013 3017 3021 3025 3029 3033 3037 3041 3045 3049 3053 3057 3061 3065 3069 3073 3077 3081 3085 3089 3093 3097 3101 3105 3109 3113 3117 3121 3125 3129 3133 3137 3141 3145 3149 3153 3157 3161 3165 3169 3173 3177 3181 3185 3189 3193 3197 3201 3205 3209 3213 3217 3221 3225 3229 3233 3237 3241 3245 3249 3253 3257 3261 3265 3269 3273 3277 3281 3285 3289 3293 3297 3301 3305 3309 3313 3317 3321 3325 3329 3333 3337 3341 3345 3349 3353 3357 3361 3365 3369 3373 3377 3381 3385 3389 3393 3397 3401 3405 3409 3413 3417 3421 3425 3429 3433 3437 3441 3445 3449 3453 3457 3461 3465 3469 3473 3477 3481 3485 3489 3493 3497 3501 3505 3509 3513 3517 3521 3525 3529 3533 3537 3541 3545 3549 3553 3557 3561 3565 3569 3573 3577 3581 3585 3589 3593 3597 3601 3605 3609 3613 3617 3621 3625 3629 3633 3637 3641 3645 3649 3653 3657 3661 3665 3669 3673 3677 3681 3685 3689 3693 3697 3701 3705 3709 3713 3717 3721 3725 3729 3733 3737 3741 3745 3749 3753 3757 3761 3765 3769 3773 3777 3781 3785 3789 3793 3797 3801 3805 3809 3813 3817 3821 3825 3829 3833 3837 3841 3845 3849 3853 3857 3861 3865 3869 3873 3877 3881 3885 3889 3893 3897 3901 3905 3909 3913 3917 3921 3925 3929 3933 3937 3941 3945 3949 3953 3957 3961 3965 3969 3973 3977 3981 3985 3989 3993 3997 4001 4005 4009 4013 4017 4021 4025 4029 4033 4037 4041 4045 4049 4053 4057 4061 4065 4069 4073 4077 4081 4085 4089 4093 4097 4101 4105 4109 4113 4117 4121 4125 4129 4133 4137 4141 4145 4149 4153 4157 4161 4165 4169 4173 4177 4181 4185 4189 4193 4197 4201 4205 4209 4213 4217 4221 4225 4229 4233 4237 4241 4245 4249 4253 4257 4261 4265 4269 4273 4277 4281 4285 4289 4293 4297 4301 4305 4309 4313 4317 4321 4325 4329 4333 4337 4341 4345 4349 4353 4357 4361 4365 4369 4373 4377 4381 4385 4389 4393 4397 4401 4405 4409 4413 4417 4421 4425 4429 4433 4437 4441 4445 4449 4453 4457 4461 4465 4469 4473 4477 4481 4485 4489 4493 4497 4501 4505 4509 4513 4517 4521 4525 4529 4533 4537 4541 4545 4549 4553 4557 4561 4565 4569 4573 4577 4581 4585 4589 4593 4597 4601 4605 4609 4613 4617 4621 4625 4629 4633 4637 4641 4645 4649 4653 4657 4661 4665 4669 4673 4677 4681 4685 4689 4693 4697 4701 4705 4709 4713 4717 4721 4725 4729 4733 4737 4741 4745 4749 4753 4757 4761 4765 4769 4773 4777 4781 4785 4789 4793 4797 4801 4805 4809 4813 4817 4821 4825 4829 4833 4837 4841 4845 4849 4853 4857 4861 4865 4869 4873 4877 4881 4885 4889 4893 4897 4901 4905 4909 4913 4917 4921 4925 4929 4933 4937 4941 4945 4949 4953 4957 4961 4965 4969 4973 4977 4981 4985 4989 4993 4997 5001 5005 5009 5013 5017 5021 5025 5029 5033 5037 5041 5045 5049 5053 5057 5061 5065 5069 5073 5077 5081 5085 5089 5093 5097 5101 5105 5109 5113 5117 5121 5125 5129 5133 5137 5141 5145 5149 5153 5157 5161 5165 5169 5173 5177 5181 5185 5189 5193 5197 5201 5205 5209 5213 5217 5221 5225 5229 5233 5237 5241 5245 5249 5253 5257 5261 5265 5269 5273 5277 5281 5285 5289 5293 5297 5301 5305 5309 5313 5317 5321 5325 5329 5333 5337 5341 5345 5349 5353 5357 5361 5365 5369 5373 5377 5381 5385 5389 5393 5397 5401 5405 5409 5413 5417 5421 5425 5429 5433 5437 5441 5445 5449 5453 5457 5461 5465 5469 5473 5477 5481 5485 5489 5493 5497 5501 5505 5509 5513 5517 5521 5525 5529 5533 5537 5541 5545 5549 5553 5557 5561 5565 5569 5573 5577 5581 5585 5589 5593 5597 5601 5605 5609 5613 5617 5621 5625 5629 5633 5637 5641 5645 5649 5653 5657 5661 5665 5669 5673 5677 5681 5685 5689 5693 5697 5701 5705 5709 5713 5717 5721 5725 5729 5733 5737 5741 5745 5749 5753 5757 5761 5765 5769 5773 5777 5781 5785 5789 5793 5797 5801 5805 5809 5813 5817 5821 5825 5829 5833 5837 5841 5845 5849 5853 5857 5861 5865 5869 5873 5877 5881 5885 5889 5893 5897 5901 5905 5909 5913 5917 5921 5925 5929 5933 5937 5941 5945 5949 5953 5957 5961 5965 5969 5973 5977 5981 5985 5989 5993 5997 | \ - N 2019 2079 2078 2018 2018 2078 2080 2021 2021 2080:2081 \ - 2023 2023 2081:2082 2025 2025 2082:2083 2027 2027 2083:2084 \ - 2029 2029 2084:2085 2031 2031 2085:2086 2033 2033 2086:2087 \ - 2035 2035 2087:2088 2037 2037 2088:2089 2039 2039 2089:2090 \ - 2041 2041 2090:2091 2043 2043 2091:2092 2045 2045 2092:2093 \ - 2047 2047 2093:2094 2049 2049 2094:2095 2051 2051 2095:2096 \ - 2053 2053 2096:2097 2055 2055 2097:2098 2057 2057 2098:2099 \ - 2059 2059 2099:2100 2061 2061 2100:2101 2063 2063 2101:2102 \ - 2065 2065 2102:2103 2067 2067 2103:2104 2069 2069 2104:2105 \ - 2071 2071 2105:2106 2073 2073 2106:2107 2075 2075 2107:2108 \ - 2077 2079 2110 2109 2078 2078 2109 2111 2080 2080 2111:2112 \ - 2081 2081 2112:2113 2082 2082 2113:2114 2083 2083 2114:2115 \ - 2084 2084 2115:2116 2085 2085 2116:2117 2086 2086 2117:2118 \ - 2087 2087 2118:2119 2088 2088 2119:2120 2089 2089 2120:2121 \ - 2090 2090 2121:2122 2091 2091 2122:2123 2092 2092 2123:2124 \ - 2093 2093 2124:2125 2094 2094 2125:2126 2095 2095 2126:2127 \ - 2096 2096 2127:2128 2097 2097 2128:2129 2098 2098 2129:2130 \ - 2099 2099 2130:2131 2100 2100 2131:2132 2101 2101 2132:2133 \ - 2102 2102 2133:2134 2103 2103 2134:2135 2104 2104 2135:2136 \ - 2105 2105 2136:2137 2106 2106 2137:2138 2107 2107 2138:2139 \ - 2108 2110 2141 2140 2109 2109 2140 2142 2111 2111 2142:2143 \ - 2112 2112 2143:2144 2113 2113 2144:2145 2114 2114 2145:2146 \ - 2115 2115 2146:2147 2116 2116 2147:2148 2117 2117 2148:2149 \ - 2118 2118 2149:2150 2119 2119 2150:2151 2120 2120 2151:2152 \ - 2121 2121 2152:2153 2122 2122 2153:2154 2123 2123 2154:2155 \ - 2124 2124 2155:2156 2125 2125 2156:2157 2126 2126 2157:2158 \ - 2127 2127 2158:2159 2128 2128 2159:2160 2129 2129 2160:2161 \ - 2130 2130 2161:2162 2131 2131 2162:2163 2132 2132 2163:2164 \ - 2133 2133 2164:2165 2134 2134 2165:2166 2135 2135 2166:2167 \ - 2136 2136 2167:2168 2137 2137 2168:2169 2138 2138 2169:2170 \ - 2139 2141 3102 3101 2140 2140 3101 3103 2142 2142 3103:3104 \ - 2143 2143 3104:3105 2144 2144 3105:3106 2145 2145 3106:3107 \ - 2146 2146 3107:3108 2147 2147 3108:3109 2148 2148 3109:3110 \ - 2149 2149 3110:3111 2150 2150 3111:3112 2151 2151 3112:3113 \ - 2152 2152 3113:3114 2153 2153 3114:3115 2154 2154 3115:3116 \ - 2155 2155 3116:3117 2156 2156 3117:3118 2157 2157 3118:3119 \ - 2158 2158 3119:3120 2159 2159 3120:3121 2160 2160 3121:3122 \ - 2161 2161 3122:3123 2162 2162 3123:3124 2163 2163 3124:3125 \ - 2164 2164 3125:3126 2165 2165 3126:3127 2166 2166 3127:3128 \ - 2167 2167 3128:3129 2168 2168 3129:3130 2169 2169 3130:3131 \ - 2170 3102 3133 3132 3101 3101 3132 3134 3103 3103 3134:3135 \ - 3104 3104 3135:3136 3105 3105 3136:3137 3106 3106 3137:3138 \ - 3107 3107 3138:3139 3108 3108 3139:3140 3109 3109 3140:3141 \ - 3110 3110 3141:3142 3111 3111 3142:3143 3112 3112 3143:3144 \ - 3113 3113 3144:3145 3114 3114 3145:3146 3115 3115 3146:3147 \ - 3116 3116 3147:3148 3117 3117 3148:3149 3118 3118 3149:3150 \ - 3119 3119 3150:3151 3120 3120 3151:3152 3121 3121 3152:3153 \ - 3122 3122 3153:3154 3123 3123 3154:3155 3124 3124 3155:3156 \ - 3125 3125 3156:3157 3126 3126 3157:3158 3127 3127 3158:3159 \ - 3128 3128 3159:3160 3129 3129 3160:3161 3130 3130 3161:3162 \ - 3131 3133 3164 3163 3132 3132 3163 3165 3134 3134 3165:3166 \ - 3135 3135 3166:3167 3136 3136 3167:3168 3137 3137 3168:3169 \ - 3138 3138 3169:3170 3139 3139 3170:3171 3140 3140 3171:3172 \ - 3141 3141 3172:3173 3142 3142 3173:3174 3143 3143 3174:3175 \ - 3144 3144 3175:3176 3145 3145 3176:3177 3146 3146 3177:3178 \ - 3147 3147 3178:3179 3148 3148 3179:3180 3149 3149 3180:3181 \ - 3150 3150 3181:3182 3151 3151 3182:3183 3152 3152 3183:3184 \ - 3153 3153 3184:3185 3154 3154 3185:3186 3155 3155 3186:3187 \ - 3156 3156 3187:3188 3157 3157 3188:3189 3158 3158 3189:3190 \ - 3159 3159 3190:3191 3160 3160 3191:3192 3161 3161 3192:3193 \ - 3162 3164 3195 3194 3163 3163 3194 3196 3165 3165 3196:3197 \ - 3166 3166 3197:3198 3167 3167 3198:3199 3168 3168 3199:3200 \ - 3169 3169 3200:3201 3170 3170 3201:3202 3171 3171 3202:3203 \ - 3172 3172 3203:3204 3173 3173 3204:3205 3174 3174 3205:3206 \ - 3175 3175 3206:3207 3176 3176 3207:3208 3177 3177 3208:3209 \ - 3178 3178 3209:3210 3179 3179 3210:3211 3180 3180 3211:3212 \ - 3181 3181 3212:3213 3182 3182 3213:3214 3183 3183 3214:3215 \ - 3184 3184 3215:3216 3185 3185 3216:3217 3186 3186 3217:3218 \ - 3187 3187 3218:3219 3188 3188 3219:3220 3189 3189 3220:3221 \ - 3190 3190 3221:3222 3191 3191 3222:3223 3192 3192 3223:3224 \ - 3193 3195 3226 3225 3194 3194 3225 3227 3196 3196 3227:3228 \ - 3197 3197 3228:3229 3198 3198 3229:3230 3199 3199 3230:3231 \ - 3200 3200 3231:3232 3201 3201 3232:3233 3202 3202 3233:3234 \ - 3203 3203 3234:3235 3204 3204 3235:3236 3205 3205 3236:3237 \ - 3206 3206 3237:3238 3207 3207 3238:3239 3208 3208 3239:3240 \ - 3209 3209 3240:3241 3210 3210 3241:3242 3211 3211 3242:3243 \ - 3212 3212 3243:3244 3213 3213 3244:3245 3214 3214 3245:3246 \ - 3215 3215 3246:3247 3216 3216 3247:3248 3217 3217 3248:3249 \ - 3218 3218 3249:3250 3219 3219 3250:3251 3220 3220 3251:3252 \ - 3221 3221 3252:3253 3222 3222 3253:3254 3223 3223 3254:3255 \ - 3224 3226 3257 3256 3225 3225 3256 3258 3227 3227 3258:3259 \ - 3228 3228 3259:3260 3229 3229 3260:3261 3230 3230 3261:3262 \ - 3231 3231 3262:3263 3232 3232 3263:3264 3233 3233 3264:3265 \ - 3234 3234 3265:3266 3235 3235 3266:3267 3236 3236 3267:3268 \ - 3237 3237 3268:3269 3238 3238 3269:3270 3239 3239 3270:3271 \ - 3240 3240 3271:3272 3241 3241 3272:3273 3242 3242 3273:3274 \ - 3243 3243 3274:3275 3244 3244 3275:3276 3245 3245 3276:3277 \ - 3246 3246 3277:3278 3247 3247 3278:3279 3248 3248 3279:3280 \ - 3249 3249 3280:3281 3250 3250 3281:3282 3251 3251 3282:3283 \ - 3252 3252 3283:3284 3253 3253 3284:3285 3254 3254 3285:3286 \ - 3255 3257 3288 3287 3256 3256 3287 3289 3258 3258 3289:3290 \ - 3259 3259 3290:3291 3260 3260 3291:3292 3261 3261 3292:3293 \ - 3262 3262 3293:3294 3263 3263 3294:3295 3264 3264 3295:3296 \ - 3265 3265 3296:3297 3266 3266 3297:3298 3267 3267 3298:3299 \ - 3268 3268 3299:3300 3269 3269 3300:3301 3270 3270 3301:3302 \ - 3271 3271 3302:3303 3272 3272 3303:3304 3273 3273 3304:3305 \ - 3274 3274 3305:3306 3275 3275 3306:3307 3276 3276 3307:3308 \ - 3277 3277 3308:3309 3278 3278 3309:3310 3279 3279 3310:3311 \ - 3280 3280 3311:3312 3281 3281 3312:3313 3282 3282 3313:3314 \ - 3283 3283 3314:3315 3284 3284 3315:3316 3285 3285 3316:3317 \ - 3286 3288 3319 3318 3287 3287 3318 3320 3289 3289 3320:3321 \ - 3290 3290 3321:3322 3291 3291 3322:3323 3292 3292 3323:3324 \ - 3293 3293 3324:3325 3294 3294 3325:3326 3295 3295 3326:3327 \ - 3296 3296 3327:3328 3297 3297 3328:3329 3298 3298 3329:3330 \ - 3299 3299 3330:3331 3300 3300 3331:3332 3301 3301 3332:3333 \ - 3302 3302 3333:3334 3303 3303 3334:3335 3304 3304 3335:3336 \ - 3305 3305 3336:3337 3306 3306 3337:3338 3307 3307 3338:3339 \ - 3308 3308 3339:3340 3309 3309 3340:3341 3310 3310 3341:3342 \ - 3311 3311 3342:3343 3312 3312 3343:3344 3313 3313 3344:3345 \ - 3314 3314 3345:3346 3315 3315 3346:3347 3316 3316 3347:3348 \ - 3317 3319 3350 3349 3318 3318 3349 3351 3320 3320 3351:3352 \ - 3321 3321 3352:3353 3322 3322 3353:3354 3323 3323 3354:3355 \ - 3324 3324 3355:3356 3325 3325 3356:3357 3326 3326 3357:3358 \ - 3327 3327 3358:3359 3328 3328 3359:3360 3329 3329 3360:3361 \ - 3330 3330 3361:3362 3331 3331 3362:3363 3332 3332 3363:3364 \ - 3333 3333 3364:3365 3334 3334 3365:3366 3335 3335 3366:3367 \ - 3336 3336 3367:3368 3337 3337 3368:3369 3338 3338 3369:3370 \ - 3339 3339 3370:3371 3340 3340 3371:3372 3341 3341 3372:3373 \ - 3342 3342 3373:3374 3343 3343 3374:3375 3344 3344 3375:3376 \ - 3345 3345 3376:3377 3346 3346 3377:3378 3347 3347 3378:3379 \ - 3348 3350 3381 3380 3349 3349 3380 3382 3351 3351 3382:3383 \ - 3352 3352 3383:3384 3353 3353 3384:3385 3354 3354 3385:3386 \ - 3355 3355 3386:3387 3356 3356 3387:3388 3357 3357 3388:3389 \ - 3358 3358 3389:3390 3359 3359 3390:3391 3360 3360 3391:3392 \ - 3361 3361 3392:3393 3362 3362 3393:3394 3363 3363 3394:3395 \ - 3364 3364 3395:3396 3365 3365 3396:3397 3366 3366 3397:3398 \ - 3367 3367 3398:3399 3368 3368 3399:3400 3369 3369 3400:3401 \ - 3370 3370 3401:3402 3371 3371 3402:3403 3372 3372 3403:3404 \ - 3373 3373 3404:3405 3374 3374 3405:3406 3375 3375 3406:3407 \ - 3376 3376 3407:3408 3377 3377 3408:3409 3378 3378 3409:3410 \ - 3379 3381 3412 3411 3380 3380 3411 3413 3382 3382 3413:3414 \ - 3383 3383 3414:3415 3384 3384 3415:3416 3385 3385 3416:3417 \ - 3386 3386 3417:3418 3387 3387 3418:3419 3388 3388 3419:3420 \ - 3389 3389 3420:3421 3390 3390 3421:3422 3391 3391 3422:3423 \ - 3392 3392 3423:3424 3393 3393 3424:3425 3394 3394 3425:3426 \ - 3395 3395 3426:3427 3396 3396 3427:3428 3397 3397 3428:3429 \ - 3398 3398 3429:3430 3399 3399 3430:3431 3400 3400 3431:3432 \ - 3401 3401 3432:3433 3402 3402 3433:3434 3403 3403 3434:3435 \ - 3404 3404 3435:3436 3405 3405 3436:3437 3406 3406 3437:3438 \ - 3407 3407 3438:3439 3408 3408 3439:3440 3409 3409 3440:3441 \ - 3410 3412 3443 3442 3411 3411 3442 3444 3413 3413 3444:3445 \ - 3414 3414 3445:3446 3415 3415 3446:3447 3416 3416 3447:3448 \ - 3417 3417 3448:3449 3418 3418 3449:3450 3419 3419 3450:3451 \ - 3420 3420 3451:3452 3421 3421 3452:3453 3422 3422 3453:3454 \ - 3423 3423 3454:3455 3424 3424 3455:3456 3425 3425 3456:3457 \ - 3426 3426 3457:3458 3427 3427 3458:3459 3428 3428 3459:3460 \ - 3429 3429 3460:3461 3430 3430 3461:3462 3431 3431 3462:3463 \ - 3432 3432 3463:3464 3433 3433 3464:3465 3434 3434 3465:3466 \ - 3435 3435 3466:3467 3436 3436 3467:3468 3437 3437 3468:3469 \ - 3438 3438 3469:3470 3439 3439 3470:3471 3440 3440 3471:3472 \ - 3441 3443 3474 3473 3442 3442 3473 3475 3444 3444 3475:3476 \ - 3445 3445 3476:3477 3446 3446 3477:3478 3447 3447 3478:3479 \ - 3448 3448 3479:3480 3449 3449 3480:3481 3450 3450 3481:3482 \ - 3451 3451 3482:3483 3452 3452 3483:3484 3453 3453 3484:3485 \ - 3454 3454 3485:3486 3455 3455 3486:3487 3456 3456 3487:3488 \ - 3457 3457 3488:3489 3458 3458 3489:3490 3459 3459 3490:3491 \ - 3460 3460 3491:3492 3461 3461 3492:3493 3462 3462 3493:3494 \ - 3463 3463 3494:3495 3464 3464 3495:3496 3465 3465 3496:3497 \ - 3466 3466 3497:3498 3467 3467 3498:3499 3468 3468 3499:3500 \ - 3469 3469 3500:3501 3470 3470 3501:3502 3471 3471 3502:3503 \ - 3472 3474 3505 3504 3473 3473 3504 3506 3475 3475 3506:3507 \ - 3476 3476 3507:3508 3477 3477 3508:3509 3478 3478 3509:3510 \ - 3479 3479 3510:3511 3480 3480 3511:3512 3481 3481 3512:3513 \ - 3482 3482 3513:3514 3483 3483 3514:3515 3484 3484 3515:3516 \ - 3485 3485 3516:3517 3486 3486 3517:3518 3487 3487 3518:3519 \ - 3488 3488 3519:3520 3489 3489 3520:3521 3490 3490 3521:3522 \ - 3491 3491 3522:3523 3492 3492 3523:3524 3493 3493 3524:3525 \ - 3494 3494 3525:3526 3495 3495 3526:3527 3496 3496 3527:3528 \ - 3497 3497 3528:3529 3498 3498 3529:3530 3499 3499 3530:3531 \ - 3500 3500 3531:3532 3501 3501 3532:3533 3502 3502 3533:3534 \ - 3503 3505 3536 3535 3504 3504 3535 3537 3506 3506 3537:3538 \ - 3507 3507 3538:3539 3508 3508 3539:3540 3509 3509 3540:3541 \ - 3510 3510 3541:3542 3511 3511 3542:3543 3512 3512 3543:3544 \ - 3513 3513 3544:3545 3514 3514 3545:3546 3515 3515 3546:3547 \ - 3516 3516 3547:3548 3517 3517 3548:3549 3518 3518 3549:3550 \ - 3519 3519 3550:3551 3520 3520 3551:3552 3521 3521 3552:3553 \ - 3522 3522 3553:3554 3523 3523 3554:3555 3524 3524 3555:3556 \ - 3525 3525 3556:3557 3526 3526 3557:3558 3527 3527 3558:3559 \ - 3528 3528 3559:3560 3529 3529 3560:3561 3530 3530 3561:3562 \ - 3531 3531 3562:3563 3532 3532 3563:3564 3533 3533 3564:3565 \ - 3534 3536 3567 3566 3535 3535 3566 3568 3537 3537 3568:3569 \ - 3538 3538 3569:3570 3539 3539 3570:3571 3540 3540 3571:3572 \ - 3541 3541 3572:3573 3542 3542 3573:3574 3543 3543 3574:3575 \ - 3544 3544 3575:3576 3545 3545 3576:3577 3546 3546 3577:3578 \ - 3547 3547 3578:3579 3548 3548 3579:3580 3549 3549 3580:3581 \ - 3550 3550 3581:3582 3551 3551 3582:3583 3552 3552 3583:3584 \ - 3553 3553 3584:3585 3554 3554 3585:3586 3555 3555 3586:3587 \ - 3556 3556 3587:3588 3557 3557 3588:3589 3558 3558 3589:3590 \ - 3559 3559 3590:3591 3560 3560 3591:3592 3561 3561 3592:3593 \ - 3562 3562 3593:3594 3563 3563 3594:3595 3564 3564 3595:3596 \ - 3565 3567 3598 3597 3566 3566 3597 3599 3568 3568 3599:3600 \ - 3569 3569 3600:3601 3570 3570 3601:3602 3571 3571 3602:3603 \ - 3572 3572 3603:3604 3573 3573 3604:3605 3574 3574 3605:3606 \ - 3575 3575 3606:3607 3576 3576 3607:3608 3577 3577 3608:3609 \ - 3578 3578 3609:3610 3579 3579 3610:3611 3580 3580 3611:3612 \ - 3581 3581 3612:3613 3582 3582 3613:3614 3583 3583 3614:3615 \ - 3584 3584 3615:3616 3585 3585 3616:3617 3586 3586 3617:3618 \ - 3587 3587 3618:3619 3588 3588 3619:3620 3589 3589 3620:3621 \ - 3590 3590 3621:3622 3591 3591 3622:3623 3592 3592 3623:3624 \ - 3593 3593 3624:3625 3594 3594 3625:3626 3595 3595 3626:3627 \ - 3596 3598 3629 3628 3597 3597 3628 3630 3599 3599 3630:3631 \ - 3600 3600 3631:3632 3601 3601 3632:3633 3602 3602 3633:3634 \ - 3603 3603 3634:3635 3604 3604 3635:3636 3605 3605 3636:3637 \ - 3606 3606 3637:3638 3607 3607 3638:3639 3608 3608 3639:3640 \ - 3609 3609 3640:3641 3610 3610 3641:3642 3611 3611 3642:3643 \ - 3612 3612 3643:3644 3613 3613 3644:3645 3614 3614 3645:3646 \ - 3615 3615 3646:3647 3616 3616 3647:3648 3617 3617 3648:3649 \ - 3618 3618 3649:3650 3619 3619 3650:3651 3620 3620 3651:3652 \ - 3621 3621 3652:3653 3622 3622 3653:3654 3623 3623 3654:3655 \ - 3624 3624 3655:3656 3625 3625 3656:3657 3626 3626 3657:3658 \ - 3627 3629 3660 3659 3628 3628 3659 3661 3630 3630 3661:3662 \ - 3631 3631 3662:3663 3632 3632 3663:3664 3633 3633 3664:3665 \ - 3634 3634 3665:3666 3635 3635 3666:3667 3636 3636 3667:3668 \ - 3637 3637 3668:3669 3638 3638 3669:3670 3639 3639 3670:3671 \ - 3640 3640 3671:3672 3641 3641 3672:3673 3642 3642 3673:3674 \ - 3643 3643 3674:3675 3644 3644 3675:3676 3645 3645 3676:3677 \ - 3646 3646 3677:3678 3647 3647 3678:3679 3648 3648 3679:3680 \ - 3649 3649 3680:3681 3650 3650 3681:3682 3651 3651 3682:3683 \ - 3652 3652 3683:3684 3653 3653 3684:3685 3654 3654 3685:3686 \ - 3655 3655 3686:3687 3656 3656 3687:3688 3657 3657 3688:3689 \ - 3658 3660 3691 3690 3659 3659 3690 3692 3661 3661 3692:3693 \ - 3662 3662 3693:3694 3663 3663 3694:3695 3664 3664 3695:3696 \ - 3665 3665 3696:3697 3666 3666 3697:3698 3667 3667 3698:3699 \ - 3668 3668 3699:3700 3669 3669 3700:3701 3670 3670 3701:3702 \ - 3671 3671 3702:3703 3672 3672 3703:3704 3673 3673 3704:3705 \ - 3674 3674 3705:3706 3675 3675 3706:3707 3676 3676 3707:3708 \ - 3677 3677 3708:3709 3678 3678 3709:3710 3679 3679 3710:3711 \ - 3680 3680 3711:3712 3681 3681 3712:3713 3682 3682 3713:3714 \ - 3683 3683 3714:3715 3684 3684 3715:3716 3685 3685 3716:3717 \ - 3686 3686 3717:3718 3687 3687 3718:3719 3688 3688 3719:3720 \ - 3689 3691 3722 3721 3690 3690 3721 3723 3692 3692 3723:3724 \ - 3693 3693 3724:3725 3694 3694 3725:3726 3695 3695 3726:3727 \ - 3696 3696 3727:3728 3697 3697 3728:3729 3698 3698 3729:3730 \ - 3699 3699 3730:3731 3700 3700 3731:3732 3701 3701 3732:3733 \ - 3702 3702 3733:3734 3703 3703 3734:3735 3704 3704 3735:3736 \ - 3705 3705 3736:3737 3706 3706 3737:3738 3707 3707 3738:3739 \ - 3708 3708 3739:3740 3709 3709 3740:3741 3710 3710 3741:3742 \ - 3711 3711 3742:3743 3712 3712 3743:3744 3713 3713 3744:3745 \ - 3714 3714 3745:3746 3715 3715 3746:3747 3716 3716 3747:3748 \ - 3717 3717 3748:3749 3718 3718 3749:3750 3719 3719 3750:3751 \ - 3720 3722 3753 3752 3721 3721 3752 3754 3723 3723 3754:3755 \ - 3724 3724 3755:3756 3725 3725 3756:3757 3726 3726 3757:3758 \ - 3727 3727 3758:3759 3728 3728 3759:3760 3729 3729 3760:3761 \ - 3730 3730 3761:3762 3731 3731 3762:3763 3732 3732 3763:3764 \ - 3733 3733 3764:3765 3734 3734 3765:3766 3735 3735 3766:3767 \ - 3736 3736 3767:3768 3737 3737 3768:3769 3738 3738 3769:3770 \ - 3739 3739 3770:3771 3740 3740 3771:3772 3741 3741 3772:3773 \ - 3742 3742 3773:3774 3743 3743 3774:3775 3744 3744 3775:3776 \ - 3745 3745 3776:3777 3746 3746 3777:3778 3747 3747 3778:3779 \ - 3748 3748 3779:3780 3749 3749 3780:3781 3750 3750 3781:3782 \ - 3751 3753 3784 3783 3752 3752 3783 3785 3754 3754 3785:3786 \ - 3755 3755 3786:3787 3756 3756 3787:3788 3757 3757 3788:3789 \ - 3758 3758 3789:3790 3759 3759 3790:3791 3760 3760 3791:3792 \ - 3761 3761 3792:3793 3762 3762 3793:3794 3763 3763 3794:3795 \ - 3764 3764 3795:3796 3765 3765 3796:3797 3766 3766 3797:3798 \ - 3767 3767 3798:3799 3768 3768 3799:3800 3769 3769 3800:3801 \ - 3770 3770 3801:3802 3771 3771 3802:3803 3772 3772 3803:3804 \ - 3773 3773 3804:3805 3774 3774 3805:3806 3775 3775 3806:3807 \ - 3776 3776 3807:3808 3777 3777 3808:3809 3778 3778 3809:3810 \ - 3779 3779 3810:3811 3780 3780 3811:3812 3781 3781 3812:3813 \ - 3782 3784 3815 3814 3783 3783 3814 3816 3785 3785 3816:3817 \ - 3786 3786 3817:3818 3787 3787 3818:3819 3788 3788 3819:3820 \ - 3789 3789 3820:3821 3790 3790 3821:3822 3791 3791 3822:3823 \ - 3792 3792 3823:3824 3793 3793 3824:3825 3794 3794 3825:3826 \ - 3795 3795 3826:3827 3796 3796 3827:3828 3797 3797 3828:3829 \ - 3798 3798 3829:3830 3799 3799 3830:3831 3800 3800 3831:3832 \ - 3801 3801 3832:3833 3802 3802 3833:3834 3803 3803 3834:3835 \ - 3804 3804 3835:3836 3805 3805 3836:3837 3806 3806 3837:3838 \ - 3807 3807 3838:3839 3808 3808 3839:3840 3809 3809 3840:3841 \ - 3810 3810 3841:3842 3811 3811 3842:3843 3812 3812 3843:3844 \ - 3813 3815 3846 3845 3814 3814 3845 3847 3816 3816 3847:3848 \ - 3817 3817 3848:3849 3818 3818 3849:3850 3819 3819 3850:3851 \ - 3820 3820 3851:3852 3821 3821 3852:3853 3822 3822 3853:3854 \ - 3823 3823 3854:3855 3824 3824 3855:3856 3825 3825 3856:3857 \ - 3826 3826 3857:3858 3827 3827 3858:3859 3828 3828 3859:3860 \ - 3829 3829 3860:3861 3830 3830 3861:3862 3831 3831 3862:3863 \ - 3832 3832 3863:3864 3833 3833 3864:3865 3834 3834 3865:3866 \ - 3835 3835 3866:3867 3836 3836 3867:3868 3837 3837 3868:3869 \ - 3838 3838 3869:3870 3839 3839 3870:3871 3840 3840 3871:3872 \ - 3841 3841 3872:3873 3842 3842 3873:3874 3843 3843 3874:3875 \ - 3844 3846 3877 3876 3845 3845 3876 3878 3847 3847 3878:3879 \ - 3848 3848 3879:3880 3849 3849 3880:3881 3850 3850 3881:3882 \ - 3851 3851 3882:3883 3852 3852 3883:3884 3853 3853 3884:3885 \ - 3854 3854 3885:3886 3855 3855 3886:3887 3856 3856 3887:3888 \ - 3857 3857 3888:3889 3858 3858 3889:3890 3859 3859 3890:3891 \ - 3860 3860 3891:3892 3861 3861 3892:3893 3862 3862 3893:3894 \ - 3863 3863 3894:3895 3864 3864 3895:3896 3865 3865 3896:3897 \ - 3866 3866 3897:3898 3867 3867 3898:3899 3868 3868 3899:3900 \ - 3869 3869 3900:3901 3870 3870 3901:3902 3871 3871 3902:3903 \ - 3872 3872 3903:3904 3873 3873 3904:3905 3874 3874 3905:3906 \ - 3875 3877 3908 3907 3876 3876 3907 3909 3878 3878 3909:3910 \ - 3879 3879 3910:3911 3880 3880 3911:3912 3881 3881 3912:3913 \ - 3882 3882 3913:3914 3883 3883 3914:3915 3884 3884 3915:3916 \ - 3885 3885 3916:3917 3886 3886 3917:3918 3887 3887 3918:3919 \ - 3888 3888 3919:3920 3889 3889 3920:3921 3890 3890 3921:3922 \ - 3891 3891 3922:3923 3892 3892 3923:3924 3893 3893 3924:3925 \ - 3894 3894 3925:3926 3895 3895 3926:3927 3896 3896 3927:3928 \ - 3897 3897 3928:3929 3898 3898 3929:3930 3899 3899 3930:3931 \ - 3900 3900 3931:3932 3901 3901 3932:3933 3902 3902 3933:3934 \ - 3903 3903 3934:3935 3904 3904 3935:3936 3905 3905 3936:3937 \ - 3906 3908 3939 3938 3907 3907 3938 3940 3909 3909 3940:3941 \ - 3910 3910 3941:3942 3911 3911 3942:3943 3912 3912 3943:3944 \ - 3913 3913 3944:3945 3914 3914 3945:3946 3915 3915 3946:3947 \ - 3916 3916 3947:3948 3917 3917 3948:3949 3918 3918 3949:3950 \ - 3919 3919 3950:3951 3920 3920 3951:3952 3921 3921 3952:3953 \ - 3922 3922 3953:3954 3923 3923 3954:3955 3924 3924 3955:3956 \ - 3925 3925 3956:3957 3926 3926 3957:3958 3927 3927 3958:3959 \ - 3928 3928 3959:3960 3929 3929 3960:3961 3930 3930 3961:3962 \ - 3931 3931 3962:3963 3932 3932 3963:3964 3933 3933 3964:3965 \ - 3934 3934 3965:3966 3935 3935 3966:3967 3936 3936 3967:3968 \ - 3937 3939 3970 3969 3938 3938 3969 3971 3940 3940 3971:3972 \ - 3941 3941 3972:3973 3942 3942 3973:3974 3943 3943 3974:3975 \ - 3944 3944 3975:3976 3945 3945 3976:3977 3946 3946 3977:3978 \ - 3947 3947 3978:3979 3948 3948 3979:3980 3949 3949 3980:3981 \ - 3950 3950 3981:3982 3951 3951 3982:3983 3952 3952 3983:3984 \ - 3953 3953 3984:3985 3954 3954 3985:3986 3955 3955 3986:3987 \ - 3956 3956 3987:3988 3957 3957 3988:3989 3958 3958 3989:3990 \ - 3959 3959 3990:3991 3960 3960 3991:3992 3961 3961 3992:3993 \ - 3962 3962 3993:3994 3963 3963 3994:3995 3964 3964 3995:3996 \ - 3965 3965 3996:3997 3966 3966 3997:3998 3967 3967 3998:3999 \ - 3968 3970 4001 4000 3969 3969 4000 4002 3971 3971 4002:4003 \ - 3972 3972 4003:4004 3973 3973 4004:4005 3974 3974 4005:4006 \ - 3975 3975 4006:4007 3976 3976 4007:4008 3977 3977 4008:4009 \ - 3978 3978 4009:4010 3979 3979 4010:4011 3980 3980 4011:4012 \ - 3981 3981 4012:4013 3982 3982 4013:4014 3983 3983 4014:4015 \ - 3984 3984 4015:4016 3985 3985 4016:4017 3986 3986 4017:4018 \ - 3987 3987 4018:4019 3988 3988 4019:4020 3989 3989 4020:4021 \ - 3990 3990 4021:4022 3991 3991 4022:4023 3992 3992 4023:4024 \ - 3993 3993 4024:4025 3994 3994 4025:4026 3995 3995 4026:4027 \ - 3996 3996 4027:4028 3997 3997 4028:4029 3998 3998 4029:4030 \ - 3999 2016 2019 2018 2017 2017:2018 2021 2020 2020:2021 \ - 2023 2022 2022:2023 2025 2024 2024:2025 2027 2026 2026:2027 \ - 2029 2028 2028:2029 2031 2030 2030:2031 2033 2032 2032:2033 \ - 2035 2034 2034:2035 2037 2036 2036:2037 2039 2038 2038:2039 \ - 2041 2040 2040:2041 2043 2042 2042:2043 2045 2044 2044:2045 \ - 2047 2046 2046:2047 2049 2048 2048:2049 2051 2050 2050:2051 \ - 2053 2052 2052:2053 2055 2054 2054:2055 2057 2056 2056:2057 \ - 2059 2058 2058:2059 2061 2060 2060:2061 2063 2062 2062:2063 \ - 2065 2064 2064:2065 2067 2066 2066:2067 2069 2068 2068:2069 \ - 2071 2070 2070:2071 2073 2072 2072:2073 2075 2074 2074:2075 \ - 2077 2076 2171 2174 2173 2172 2172:2173 2176 2175 2175:2176 \ - 2178 2177 2177:2178 2180 2179 2179:2180 2182 2181 2181:2182 \ - 2184 2183 2183:2184 2186 2185 2185:2186 2188 2187 2187:2188 \ - 2190 2189 2189:2190 2192 2191 2191:2192 2194 2193 2193:2194 \ - 2196 2195 2195:2196 2198 2197 2197:2198 2200 2199 2199:2200 \ - 2202 2201 2201:2202 2204 2203 2203:2204 2206 2205 2205:2206 \ - 2208 2207 2207:2208 2210 2209 2209:2210 2212 2211 2211:2212 \ - 2214 2213 2213:2214 2216 2215 2215:2216 2218 2217 2217:2218 \ - 2220 2219 2219:2220 2222 2221 2221:2222 2224 2223 2223:2224 \ - 2226 2225 2225:2226 2228 2227 2227:2228 2230 2229 2229:2230 \ - 2232 2231 2174 2234 2233 2173 2173 2233 2235 2176 2176 2235:2236 \ - 2178 2178 2236:2237 2180 2180 2237:2238 2182 2182 2238:2239 \ - 2184 2184 2239:2240 2186 2186 2240:2241 2188 2188 2241:2242 \ - 2190 2190 2242:2243 2192 2192 2243:2244 2194 2194 2244:2245 \ - 2196 2196 2245:2246 2198 2198 2246:2247 2200 2200 2247:2248 \ - 2202 2202 2248:2249 2204 2204 2249:2250 2206 2206 2250:2251 \ - 2208 2208 2251:2252 2210 2210 2252:2253 2212 2212 2253:2254 \ - 2214 2214 2254:2255 2216 2216 2255:2256 2218 2218 2256:2257 \ - 2220 2220 2257:2258 2222 2222 2258:2259 2224 2224 2259:2260 \ - 2226 2226 2260:2261 2228 2228 2261:2262 2230 2230 2262:2263 \ - 2232 2234 2265 2264 2233 2233 2264 2266 2235 2235 2266:2267 \ - 2236 2236 2267:2268 2237 2237 2268:2269 2238 2238 2269:2270 \ - 2239 2239 2270:2271 2240 2240 2271:2272 2241 2241 2272:2273 \ - 2242 2242 2273:2274 2243 2243 2274:2275 2244 2244 2275:2276 \ - 2245 2245 2276:2277 2246 2246 2277:2278 2247 2247 2278:2279 \ - 2248 2248 2279:2280 2249 2249 2280:2281 2250 2250 2281:2282 \ - 2251 2251 2282:2283 2252 2252 2283:2284 2253 2253 2284:2285 \ - 2254 2254 2285:2286 2255 2255 2286:2287 2256 2256 2287:2288 \ - 2257 2257 2288:2289 2258 2258 2289:2290 2259 2259 2290:2291 \ - 2260 2260 2291:2292 2261 2261 2292:2293 2262 2262 2293:2294 \ - 2263 2265 2296 2295 2264 2264 2295 2297 2266 2266 2297:2298 \ - 2267 2267 2298:2299 2268 2268 2299:2300 2269 2269 2300:2301 \ - 2270 2270 2301:2302 2271 2271 2302:2303 2272 2272 2303:2304 \ - 2273 2273 2304:2305 2274 2274 2305:2306 2275 2275 2306:2307 \ - 2276 2276 2307:2308 2277 2277 2308:2309 2278 2278 2309:2310 \ - 2279 2279 2310:2311 2280 2280 2311:2312 2281 2281 2312:2313 \ - 2282 2282 2313:2314 2283 2283 2314:2315 2284 2284 2315:2316 \ - 2285 2285 2316:2317 2286 2286 2317:2318 2287 2287 2318:2319 \ - 2288 2288 2319:2320 2289 2289 2320:2321 2290 2290 2321:2322 \ - 2291 2291 2322:2323 2292 2292 2323:2324 2293 2293 2324:2325 \ - 2294 2296 2327 2326 2295 2295 2326 2328 2297 2297 2328:2329 \ - 2298 2298 2329:2330 2299 2299 2330:2331 2300 2300 2331:2332 \ - 2301 2301 2332:2333 2302 2302 2333:2334 2303 2303 2334:2335 \ - 2304 2304 2335:2336 2305 2305 2336:2337 2306 2306 2337:2338 \ - 2307 2307 2338:2339 2308 2308 2339:2340 2309 2309 2340:2341 \ - 2310 2310 2341:2342 2311 2311 2342:2343 2312 2312 2343:2344 \ - 2313 2313 2344:2345 2314 2314 2345:2346 2315 2315 2346:2347 \ - 2316 2316 2347:2348 2317 2317 2348:2349 2318 2318 2349:2350 \ - 2319 2319 2350:2351 2320 2320 2351:2352 2321 2321 2352:2353 \ - 2322 2322 2353:2354 2323 2323 2354:2355 2324 2324 2355:2356 \ - 2325 2327 2358 2357 2326 2326 2357 2359 2328 2328 2359:2360 \ - 2329 2329 2360:2361 2330 2330 2361:2362 2331 2331 2362:2363 \ - 2332 2332 2363:2364 2333 2333 2364:2365 2334 2334 2365:2366 \ - 2335 2335 2366:2367 2336 2336 2367:2368 2337 2337 2368:2369 \ - 2338 2338 2369:2370 2339 2339 2370:2371 2340 2340 2371:2372 \ - 2341 2341 2372:2373 2342 2342 2373:2374 2343 2343 2374:2375 \ - 2344 2344 2375:2376 2345 2345 2376:2377 2346 2346 2377:2378 \ - 2347 2347 2378:2379 2348 2348 2379:2380 2349 2349 2380:2381 \ - 2350 2350 2381:2382 2351 2351 2382:2383 2352 2352 2383:2384 \ - 2353 2353 2384:2385 2354 2354 2385:2386 2355 2355 2386:2387 \ - 2356 2358 2389 2388 2357 2357 2388 2390 2359 2359 2390:2391 \ - 2360 2360 2391:2392 2361 2361 2392:2393 2362 2362 2393:2394 \ - 2363 2363 2394:2395 2364 2364 2395:2396 2365 2365 2396:2397 \ - 2366 2366 2397:2398 2367 2367 2398:2399 2368 2368 2399:2400 \ - 2369 2369 2400:2401 2370 2370 2401:2402 2371 2371 2402:2403 \ - 2372 2372 2403:2404 2373 2373 2404:2405 2374 2374 2405:2406 \ - 2375 2375 2406:2407 2376 2376 2407:2408 2377 2377 2408:2409 \ - 2378 2378 2409:2410 2379 2379 2410:2411 2380 2380 2411:2412 \ - 2381 2381 2412:2413 2382 2382 2413:2414 2383 2383 2414:2415 \ - 2384 2384 2415:2416 2385 2385 2416:2417 2386 2386 2417:2418 \ - 2387 2389 2420 2419 2388 2388 2419 2421 2390 2390 2421:2422 \ - 2391 2391 2422:2423 2392 2392 2423:2424 2393 2393 2424:2425 \ - 2394 2394 2425:2426 2395 2395 2426:2427 2396 2396 2427:2428 \ - 2397 2397 2428:2429 2398 2398 2429:2430 2399 2399 2430:2431 \ - 2400 2400 2431:2432 2401 2401 2432:2433 2402 2402 2433:2434 \ - 2403 2403 2434:2435 2404 2404 2435:2436 2405 2405 2436:2437 \ - 2406 2406 2437:2438 2407 2407 2438:2439 2408 2408 2439:2440 \ - 2409 2409 2440:2441 2410 2410 2441:2442 2411 2411 2442:2443 \ - 2412 2412 2443:2444 2413 2413 2444:2445 2414 2414 2445:2446 \ - 2415 2415 2446:2447 2416 2416 2447:2448 2417 2417 2448:2449 \ - 2418 2420 2451 2450 2419 2419 2450 2452 2421 2421 2452:2453 \ - 2422 2422 2453:2454 2423 2423 2454:2455 2424 2424 2455:2456 \ - 2425 2425 2456:2457 2426 2426 2457:2458 2427 2427 2458:2459 \ - 2428 2428 2459:2460 2429 2429 2460:2461 2430 2430 2461:2462 \ - 2431 2431 2462:2463 2432 2432 2463:2464 2433 2433 2464:2465 \ - 2434 2434 2465:2466 2435 2435 2466:2467 2436 2436 2467:2468 \ - 2437 2437 2468:2469 2438 2438 2469:2470 2439 2439 2470:2471 \ - 2440 2440 2471:2472 2441 2441 2472:2473 2442 2442 2473:2474 \ - 2443 2443 2474:2475 2444 2444 2475:2476 2445 2445 2476:2477 \ - 2446 2446 2477:2478 2447 2447 2478:2479 2448 2448 2479:2480 \ - 2449 2451 2482 2481 2450 2450 2481 2483 2452 2452 2483:2484 \ - 2453 2453 2484:2485 2454 2454 2485:2486 2455 2455 2486:2487 \ - 2456 2456 2487:2488 2457 2457 2488:2489 2458 2458 2489:2490 \ - 2459 2459 2490:2491 2460 2460 2491:2492 2461 2461 2492:2493 \ - 2462 2462 2493:2494 2463 2463 2494:2495 2464 2464 2495:2496 \ - 2465 2465 2496:2497 2466 2466 2497:2498 2467 2467 2498:2499 \ - 2468 2468 2499:2500 2469 2469 2500:2501 2470 2470 2501:2502 \ - 2471 2471 2502:2503 2472 2472 2503:2504 2473 2473 2504:2505 \ - 2474 2474 2505:2506 2475 2475 2506:2507 2476 2476 2507:2508 \ - 2477 2477 2508:2509 2478 2478 2509:2510 2479 2479 2510:2511 \ - 2480 2482 2513 2512 2481 2481 2512 2514 2483 2483 2514:2515 \ - 2484 2484 2515:2516 2485 2485 2516:2517 2486 2486 2517:2518 \ - 2487 2487 2518:2519 2488 2488 2519:2520 2489 2489 2520:2521 \ - 2490 2490 2521:2522 2491 2491 2522:2523 2492 2492 2523:2524 \ - 2493 2493 2524:2525 2494 2494 2525:2526 2495 2495 2526:2527 \ - 2496 2496 2527:2528 2497 2497 2528:2529 2498 2498 2529:2530 \ - 2499 2499 2530:2531 2500 2500 2531:2532 2501 2501 2532:2533 \ - 2502 2502 2533:2534 2503 2503 2534:2535 2504 2504 2535:2536 \ - 2505 2505 2536:2537 2506 2506 2537:2538 2507 2507 2538:2539 \ - 2508 2508 2539:2540 2509 2509 2540:2541 2510 2510 2541:2542 \ - 2511 2513 2544 2543 2512 2512 2543 2545 2514 2514 2545:2546 \ - 2515 2515 2546:2547 2516 2516 2547:2548 2517 2517 2548:2549 \ - 2518 2518 2549:2550 2519 2519 2550:2551 2520 2520 2551:2552 \ - 2521 2521 2552:2553 2522 2522 2553:2554 2523 2523 2554:2555 \ - 2524 2524 2555:2556 2525 2525 2556:2557 2526 2526 2557:2558 \ - 2527 2527 2558:2559 2528 2528 2559:2560 2529 2529 2560:2561 \ - 2530 2530 2561:2562 2531 2531 2562:2563 2532 2532 2563:2564 \ - 2533 2533 2564:2565 2534 2534 2565:2566 2535 2535 2566:2567 \ - 2536 2536 2567:2568 2537 2537 2568:2569 2538 2538 2569:2570 \ - 2539 2539 2570:2571 2540 2540 2571:2572 2541 2541 2572:2573 \ - 2542 2544 2575 2574 2543 2543 2574 2576 2545 2545 2576:2577 \ - 2546 2546 2577:2578 2547 2547 2578:2579 2548 2548 2579:2580 \ - 2549 2549 2580:2581 2550 2550 2581:2582 2551 2551 2582:2583 \ - 2552 2552 2583:2584 2553 2553 2584:2585 2554 2554 2585:2586 \ - 2555 2555 2586:2587 2556 2556 2587:2588 2557 2557 2588:2589 \ - 2558 2558 2589:2590 2559 2559 2590:2591 2560 2560 2591:2592 \ - 2561 2561 2592:2593 2562 2562 2593:2594 2563 2563 2594:2595 \ - 2564 2564 2595:2596 2565 2565 2596:2597 2566 2566 2597:2598 \ - 2567 2567 2598:2599 2568 2568 2599:2600 2569 2569 2600:2601 \ - 2570 2570 2601:2602 2571 2571 2602:2603 2572 2572 2603:2604 \ - 2573 2575 2606 2605 2574 2574 2605 2607 2576 2576 2607:2608 \ - 2577 2577 2608:2609 2578 2578 2609:2610 2579 2579 2610:2611 \ - 2580 2580 2611:2612 2581 2581 2612:2613 2582 2582 2613:2614 \ - 2583 2583 2614:2615 2584 2584 2615:2616 2585 2585 2616:2617 \ - 2586 2586 2617:2618 2587 2587 2618:2619 2588 2588 2619:2620 \ - 2589 2589 2620:2621 2590 2590 2621:2622 2591 2591 2622:2623 \ - 2592 2592 2623:2624 2593 2593 2624:2625 2594 2594 2625:2626 \ - 2595 2595 2626:2627 2596 2596 2627:2628 2597 2597 2628:2629 \ - 2598 2598 2629:2630 2599 2599 2630:2631 2600 2600 2631:2632 \ - 2601 2601 2632:2633 2602 2602 2633:2634 2603 2603 2634:2635 \ - 2604 2606 2637 2636 2605 2605 2636 2638 2607 2607 2638:2639 \ - 2608 2608 2639:2640 2609 2609 2640:2641 2610 2610 2641:2642 \ - 2611 2611 2642:2643 2612 2612 2643:2644 2613 2613 2644:2645 \ - 2614 2614 2645:2646 2615 2615 2646:2647 2616 2616 2647:2648 \ - 2617 2617 2648:2649 2618 2618 2649:2650 2619 2619 2650:2651 \ - 2620 2620 2651:2652 2621 2621 2652:2653 2622 2622 2653:2654 \ - 2623 2623 2654:2655 2624 2624 2655:2656 2625 2625 2656:2657 \ - 2626 2626 2657:2658 2627 2627 2658:2659 2628 2628 2659:2660 \ - 2629 2629 2660:2661 2630 2630 2661:2662 2631 2631 2662:2663 \ - 2632 2632 2663:2664 2633 2633 2664:2665 2634 2634 2665:2666 \ - 2635 2637 2668 2667 2636 2636 2667 2669 2638 2638 2669:2670 \ - 2639 2639 2670:2671 2640 2640 2671:2672 2641 2641 2672:2673 \ - 2642 2642 2673:2674 2643 2643 2674:2675 2644 2644 2675:2676 \ - 2645 2645 2676:2677 2646 2646 2677:2678 2647 2647 2678:2679 \ - 2648 2648 2679:2680 2649 2649 2680:2681 2650 2650 2681:2682 \ - 2651 2651 2682:2683 2652 2652 2683:2684 2653 2653 2684:2685 \ - 2654 2654 2685:2686 2655 2655 2686:2687 2656 2656 2687:2688 \ - 2657 2657 2688:2689 2658 2658 2689:2690 2659 2659 2690:2691 \ - 2660 2660 2691:2692 2661 2661 2692:2693 2662 2662 2693:2694 \ - 2663 2663 2694:2695 2664 2664 2695:2696 2665 2665 2696:2697 \ - 2666 2668 2699 2698 2667 2667 2698 2700 2669 2669 2700:2701 \ - 2670 2670 2701:2702 2671 2671 2702:2703 2672 2672 2703:2704 \ - 2673 2673 2704:2705 2674 2674 2705:2706 2675 2675 2706:2707 \ - 2676 2676 2707:2708 2677 2677 2708:2709 2678 2678 2709:2710 \ - 2679 2679 2710:2711 2680 2680 2711:2712 2681 2681 2712:2713 \ - 2682 2682 2713:2714 2683 2683 2714:2715 2684 2684 2715:2716 \ - 2685 2685 2716:2717 2686 2686 2717:2718 2687 2687 2718:2719 \ - 2688 2688 2719:2720 2689 2689 2720:2721 2690 2690 2721:2722 \ - 2691 2691 2722:2723 2692 2692 2723:2724 2693 2693 2724:2725 \ - 2694 2694 2725:2726 2695 2695 2726:2727 2696 2696 2727:2728 \ - 2697 2699 2730 2729 2698 2698 2729 2731 2700 2700 2731:2732 \ - 2701 2701 2732:2733 2702 2702 2733:2734 2703 2703 2734:2735 \ - 2704 2704 2735:2736 2705 2705 2736:2737 2706 2706 2737:2738 \ - 2707 2707 2738:2739 2708 2708 2739:2740 2709 2709 2740:2741 \ - 2710 2710 2741:2742 2711 2711 2742:2743 2712 2712 2743:2744 \ - 2713 2713 2744:2745 2714 2714 2745:2746 2715 2715 2746:2747 \ - 2716 2716 2747:2748 2717 2717 2748:2749 2718 2718 2749:2750 \ - 2719 2719 2750:2751 2720 2720 2751:2752 2721 2721 2752:2753 \ - 2722 2722 2753:2754 2723 2723 2754:2755 2724 2724 2755:2756 \ - 2725 2725 2756:2757 2726 2726 2757:2758 2727 2727 2758:2759 \ - 2728 2730 2761 2760 2729 2729 2760 2762 2731 2731 2762:2763 \ - 2732 2732 2763:2764 2733 2733 2764:2765 2734 2734 2765:2766 \ - 2735 2735 2766:2767 2736 2736 2767:2768 2737 2737 2768:2769 \ - 2738 2738 2769:2770 2739 2739 2770:2771 2740 2740 2771:2772 \ - 2741 2741 2772:2773 2742 2742 2773:2774 2743 2743 2774:2775 \ - 2744 2744 2775:2776 2745 2745 2776:2777 2746 2746 2777:2778 \ - 2747 2747 2778:2779 2748 2748 2779:2780 2749 2749 2780:2781 \ - 2750 2750 2781:2782 2751 2751 2782:2783 2752 2752 2783:2784 \ - 2753 2753 2784:2785 2754 2754 2785:2786 2755 2755 2786:2787 \ - 2756 2756 2787:2788 2757 2757 2788:2789 2758 2758 2789:2790 \ - 2759 2761 2792 2791 2760 2760 2791 2793 2762 2762 2793:2794 \ - 2763 2763 2794:2795 2764 2764 2795:2796 2765 2765 2796:2797 \ - 2766 2766 2797:2798 2767 2767 2798:2799 2768 2768 2799:2800 \ - 2769 2769 2800:2801 2770 2770 2801:2802 2771 2771 2802:2803 \ - 2772 2772 2803:2804 2773 2773 2804:2805 2774 2774 2805:2806 \ - 2775 2775 2806:2807 2776 2776 2807:2808 2777 2777 2808:2809 \ - 2778 2778 2809:2810 2779 2779 2810:2811 2780 2780 2811:2812 \ - 2781 2781 2812:2813 2782 2782 2813:2814 2783 2783 2814:2815 \ - 2784 2784 2815:2816 2785 2785 2816:2817 2786 2786 2817:2818 \ - 2787 2787 2818:2819 2788 2788 2819:2820 2789 2789 2820:2821 \ - 2790 2792 2823 2822 2791 2791 2822 2824 2793 2793 2824:2825 \ - 2794 2794 2825:2826 2795 2795 2826:2827 2796 2796 2827:2828 \ - 2797 2797 2828:2829 2798 2798 2829:2830 2799 2799 2830:2831 \ - 2800 2800 2831:2832 2801 2801 2832:2833 2802 2802 2833:2834 \ - 2803 2803 2834:2835 2804 2804 2835:2836 2805 2805 2836:2837 \ - 2806 2806 2837:2838 2807 2807 2838:2839 2808 2808 2839:2840 \ - 2809 2809 2840:2841 2810 2810 2841:2842 2811 2811 2842:2843 \ - 2812 2812 2843:2844 2813 2813 2844:2845 2814 2814 2845:2846 \ - 2815 2815 2846:2847 2816 2816 2847:2848 2817 2817 2848:2849 \ - 2818 2818 2849:2850 2819 2819 2850:2851 2820 2820 2851:2852 \ - 2821 2823 2854 2853 2822 2822 2853 2855 2824 2824 2855:2856 \ - 2825 2825 2856:2857 2826 2826 2857:2858 2827 2827 2858:2859 \ - 2828 2828 2859:2860 2829 2829 2860:2861 2830 2830 2861:2862 \ - 2831 2831 2862:2863 2832 2832 2863:2864 2833 2833 2864:2865 \ - 2834 2834 2865:2866 2835 2835 2866:2867 2836 2836 2867:2868 \ - 2837 2837 2868:2869 2838 2838 2869:2870 2839 2839 2870:2871 \ - 2840 2840 2871:2872 2841 2841 2872:2873 2842 2842 2873:2874 \ - 2843 2843 2874:2875 2844 2844 2875:2876 2845 2845 2876:2877 \ - 2846 2846 2877:2878 2847 2847 2878:2879 2848 2848 2879:2880 \ - 2849 2849 2880:2881 2850 2850 2881:2882 2851 2851 2882:2883 \ - 2852 2854 2885 2884 2853 2853 2884 2886 2855 2855 2886:2887 \ - 2856 2856 2887:2888 2857 2857 2888:2889 2858 2858 2889:2890 \ - 2859 2859 2890:2891 2860 2860 2891:2892 2861 2861 2892:2893 \ - 2862 2862 2893:2894 2863 2863 2894:2895 2864 2864 2895:2896 \ - 2865 2865 2896:2897 2866 2866 2897:2898 2867 2867 2898:2899 \ - 2868 2868 2899:2900 2869 2869 2900:2901 2870 2870 2901:2902 \ - 2871 2871 2902:2903 2872 2872 2903:2904 2873 2873 2904:2905 \ - 2874 2874 2905:2906 2875 2875 2906:2907 2876 2876 2907:2908 \ - 2877 2877 2908:2909 2878 2878 2909:2910 2879 2879 2910:2911 \ - 2880 2880 2911:2912 2881 2881 2912:2913 2882 2882 2913:2914 \ - 2883 2885 2916 2915 2884 2884 2915 2917 2886 2886 2917:2918 \ - 2887 2887 2918:2919 2888 2888 2919:2920 2889 2889 2920:2921 \ - 2890 2890 2921:2922 2891 2891 2922:2923 2892 2892 2923:2924 \ - 2893 2893 2924:2925 2894 2894 2925:2926 2895 2895 2926:2927 \ - 2896 2896 2927:2928 2897 2897 2928:2929 2898 2898 2929:2930 \ - 2899 2899 2930:2931 2900 2900 2931:2932 2901 2901 2932:2933 \ - 2902 2902 2933:2934 2903 2903 2934:2935 2904 2904 2935:2936 \ - 2905 2905 2936:2937 2906 2906 2937:2938 2907 2907 2938:2939 \ - 2908 2908 2939:2940 2909 2909 2940:2941 2910 2910 2941:2942 \ - 2911 2911 2942:2943 2912 2912 2943:2944 2913 2913 2944:2945 \ - 2914 2916 2947 2946 2915 2915 2946 2948 2917 2917 2948:2949 \ - 2918 2918 2949:2950 2919 2919 2950:2951 2920 2920 2951:2952 \ - 2921 2921 2952:2953 2922 2922 2953:2954 2923 2923 2954:2955 \ - 2924 2924 2955:2956 2925 2925 2956:2957 2926 2926 2957:2958 \ - 2927 2927 2958:2959 2928 2928 2959:2960 2929 2929 2960:2961 \ - 2930 2930 2961:2962 2931 2931 2962:2963 2932 2932 2963:2964 \ - 2933 2933 2964:2965 2934 2934 2965:2966 2935 2935 2966:2967 \ - 2936 2936 2967:2968 2937 2937 2968:2969 2938 2938 2969:2970 \ - 2939 2939 2970:2971 2940 2940 2971:2972 2941 2941 2972:2973 \ - 2942 2942 2973:2974 2943 2943 2974:2975 2944 2944 2975:2976 \ - 2945 2947 2978 2977 2946 2946 2977 2979 2948 2948 2979:2980 \ - 2949 2949 2980:2981 2950 2950 2981:2982 2951 2951 2982:2983 \ - 2952 2952 2983:2984 2953 2953 2984:2985 2954 2954 2985:2986 \ - 2955 2955 2986:2987 2956 2956 2987:2988 2957 2957 2988:2989 \ - 2958 2958 2989:2990 2959 2959 2990:2991 2960 2960 2991:2992 \ - 2961 2961 2992:2993 2962 2962 2993:2994 2963 2963 2994:2995 \ - 2964 2964 2995:2996 2965 2965 2996:2997 2966 2966 2997:2998 \ - 2967 2967 2998:2999 2968 2968 2999:3000 2969 2969 3000:3001 \ - 2970 2970 3001:3002 2971 2971 3002:3003 2972 2972 3003:3004 \ - 2973 2973 3004:3005 2974 2974 3005:3006 2975 2975 3006:3007 \ - 2976 2978 3009 3008 2977 2977 3008 3010 2979 2979 3010:3011 \ - 2980 2980 3011:3012 2981 2981 3012:3013 2982 2982 3013:3014 \ - 2983 2983 3014:3015 2984 2984 3015:3016 2985 2985 3016:3017 \ - 2986 2986 3017:3018 2987 2987 3018:3019 2988 2988 3019:3020 \ - 2989 2989 3020:3021 2990 2990 3021:3022 2991 2991 3022:3023 \ - 2992 2992 3023:3024 2993 2993 3024:3025 2994 2994 3025:3026 \ - 2995 2995 3026:3027 2996 2996 3027:3028 2997 2997 3028:3029 \ - 2998 2998 3029:3030 2999 2999 3030:3031 3000 3000 3031:3032 \ - 3001 3001 3032:3033 3002 3002 3033:3034 3003 3003 3034:3035 \ - 3004 3004 3035:3036 3005 3005 3036:3037 3006 3006 3037:3038 \ - 3007 3009 3040 3039 3008 3008 3039 3041 3010 3010 3041:3042 \ - 3011 3011 3042:3043 3012 3012 3043:3044 3013 3013 3044:3045 \ - 3014 3014 3045:3046 3015 3015 3046:3047 3016 3016 3047:3048 \ - 3017 3017 3048:3049 3018 3018 3049:3050 3019 3019 3050:3051 \ - 3020 3020 3051:3052 3021 3021 3052:3053 3022 3022 3053:3054 \ - 3023 3023 3054:3055 3024 3024 3055:3056 3025 3025 3056:3057 \ - 3026 3026 3057:3058 3027 3027 3058:3059 3028 3028 3059:3060 \ - 3029 3029 3060:3061 3030 3030 3061:3062 3031 3031 3062:3063 \ - 3032 3032 3063:3064 3033 3033 3064:3065 3034 3034 3065:3066 \ - 3035 3035 3066:3067 3036 3036 3067:3068 3037 3037 3068:3069 \ - 3038 3040 3071 3070 3039 3039 3070 3072 3041 3041 3072:3073 \ - 3042 3042 3073:3074 3043 3043 3074:3075 3044 3044 3075:3076 \ - 3045 3045 3076:3077 3046 3046 3077:3078 3047 3047 3078:3079 \ - 3048 3048 3079:3080 3049 3049 3080:3081 3050 3050 3081:3082 \ - 3051 3051 3082:3083 3052 3052 3083:3084 3053 3053 3084:3085 \ - 3054 3054 3085:3086 3055 3055 3086:3087 3056 3056 3087:3088 \ - 3057 3057 3088:3089 3058 3058 3089:3090 3059 3059 3090:3091 \ - 3060 3060 3091:3092 3061 3061 3092:3093 3062 3062 3093:3094 \ - 3063 3063 3094:3095 3064 3064 3095:3096 3065 3065 3096:3097 \ - 3066 3066 3097:3098 3067 3067 3098:3099 3068 3068 3099:3100 \ - 3069 3071 2016:2017 3070 3070 2017 2020 3072 3072 2020 2022 3073 3073 2022 2024 3074 3074 2024 2026 3075 3075 2026 2028 3076 3076 2028 2030 3077 3077 2030 2032 3078 3078 2032 2034 3079 3079 2034 2036 3080 3080 2036 2038 3081 3081 2038 2040 3082 3082 2040 2042 3083 3083 2042 2044 3084 3084 2044 2046 3085 3085 2046 2048 3086 3086 2048 2050 3087 3087 2050 2052 3088 3088 2052 2054 3089 3089 2054 2056 3090 3090 2056 2058 3091 3091 2058 2060 3092 3092 2060 2062 3093 3093 2062 2064 3094 3094 2064 2066 3095 3095 2066 2068 3096 3096 2068 2070 3097 3097 2070 2072 3098 3098 2072 2074 3099 3099 2074 2076 3100 " ) -VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) -ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) -ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) -VCmd.SetStringValue( var4, r"BcName", r"Normal Locking_3" ) -VCmd.SetIntValue( var5, r"CleaFlag", 256 ) -VCmd.Quit( var4 ) -#__________________ ProcessConditions END __________________ -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 15:01:03 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 14:57:11 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + +print(100*'_') +print('DISTORTION, Process Conditions. p36') +print('Reading list of variables') + +#External Variables file: +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + if 'DistortionSolverPath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + DistortionSolverPath = linesplit[2] + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) + + +#__________________ ProcessConditions BEGIN __________________ +var4=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"ProcessConditions" ) +VCmd.SetObjectValue( var4, r"CurrentModel", "M @0" ) +VCmd.SetIntValue( var4, r"CheckDatabase", 0 ) +#__________________ GenericMaterialEditor BEGIN __________________ +var5=VCmd.ActivateChild( var4, var4, r"GenericMaterialEditor_EntityCreation" ) +ret=VCmd.ExecuteCommand( var4, r"DbFileProcess" ) +VCmd.SetObjectValue( var4, r"Model", "M @0" ) +VCmd.SetIntValue( var4, r"EntCreationMode", 1 ) +VCmd.SetStringValue( var4, r"BCType", r"Locking" ) +VCmd.SetStringValue( var4, r"BcName", r"Locking_1" ) +ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) +lst1_count,lst1 = VScn.List( " N 10168 " ) +VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count , lst1 ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"locking_translation_z" ) +VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) +VCmd.SetStringValue( var5, r"PropertySValue", r"Fixed" ) +VCmd.SetStringValue( var5, r"SourceModuleToAdd", '' ) +ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) +ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) +VCmd.SetStringValue( var4, r"BcName", r"Locking_2" ) +VCmd.SetStringValue( var4, r"BCType", r"Pressure" ) +VCmd.SetStringValue( var4, r"BcName", r"Pressure_1" ) +ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) +VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) +lst1_count,lst1 = VScn.List( " S 2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 2084 2088 2092 2096 2100 2104 2108 2112 2116 2120 2124 2128 2132 2136 2140 2144 2148 2152 2156 2160 2164 2168 2172 2176 2180 2184 2188 2192 2196 2200 2204 2208 2212 2216 2220 2224 2228 2232 2236 2240 2244 2248 2252 2256 2260 2264 2268 2272 2276 2280 2284 2288 2292 2296 2300 2304 2308 2312 2316 2320 2324 2328 2332 2336 2340 2344 2348 2352 2356 2360 2364 2368 2372 2376 2380 2384 2388 2392 2396 2400 6004 6008 6012 6016 6020 6024 6028 6032 6036 6040 6044 6048 6052 6056 6060 6064 6068 6072 6076 6080 6084 6088 6092 6096 6100 6104 6108 6112 6116 6120 6124 6128 6132 6136 6140 6144 6148 6152 6156 6160 6164 6168 6172 6176 6180 6184 6188 6192 6196 6200 6204 6208 6212 6216 6220 6224 6228 6232 6236 6240 6244 6248 6252 6256 6260 6264 6268 6272 6276 6280 6284 6288 6292 6296 6300 6304 6308 6312 6316 6320 6324 6328 6332 6336 6340 6344 6348 6352 6356 6360 6364 6368 6372 6376 6380 6384 6388 6392 6396 6400 6404 6408 6412 6416 6420 6424 6428 6432 6436 6440 6444 6448 6452 6456 6460 6464 6468 6472 6476 6480 6484 6488 6492 6496 6500 6504 6508 6512 6516 6520 6524 6528 6532 6536 6540 6544 6548 6552 6556 6560 6564 6568 6572 6576 6580 6584 6588 6592 6596 6600 6604 6608 6612 6616 6620 6624 6628 6632 6636 6640 6644 6648 6652 6656 6660 6664 6668 6672 6676 6680 6684 6688 6692 6696 6700 6704 6708 6712 6716 6720 6724 6728 6732 6736 6740 6744 6748 6752 6756 6760 6764 6768 6772 6776 6780 6784 6788 6792 6796 6800 6804 6808 6812 6816 6820 6824 6828 6832 6836 6840 6844 6848 6852 6856 6860 6864 6868 6872 6876 6880 6884 6888 6892 6896 6900 6904 6908 6912 6916 6920 6924 6928 6932 6936 6940 6944 6948 6952 6956 6960 6964 6968 6972 6976 6980 6984 6988 6992 6996 7000 7004 7008 7012 7016 7020 7024 7028 7032 7036 7040 7044 7048 7052 7056 7060 7064 7068 7072 7076 7080 7084 7088 7092 7096 7100 7104 7108 7112 7116 7120 7124 7128 7132 7136 7140 7144 7148 7152 7156 7160 7164 7168 7172 7176 7180 7184 7188 7192 7196 7200 7204 7208 7212 7216 7220 7224 7228 7232 7236 7240 7244 7248 7252 7256 7260 7264 7268 7272 7276 7280 7284 7288 7292 7296 7300 7304 7308 7312 7316 7320 7324 7328 7332 7336 7340 7344 7348 7352 7356 7360 7364 7368 7372 7376 7380 7384 7388 7392 7396 7400 7404 7408 7412 7416 7420 7424 7428 7432 7436 7440 7444 7448 7452 7456 7460 7464 7468 7472 7476 7480 7484 7488 7492 7496 7500 7504 7508 7512 7516 7520 7524 7528 7532 7536 7540 7544 7548 7552 7556 7560 7564 7568 7572 7576 7580 7584 7588 7592 7596 7600 7604 7608 7612 7616 7620 7624 7628 7632 7636 7640 7644 7648 7652 7656 7660 7664 7668 7672 7676 7680 7684 7688 7692 7696 7700 7704 7708 7712 7716 7720 7724 7728 7732 7736 7740 7744 7748 7752 7756 7760 7764 7768 7772 7776 7780 7784 7788 7792 7796 7800 7804 7808 7812 7816 7820 7824 7828 7832 7836 7840 7844 7848 7852 7856 7860 7864 7868 7872 7876 7880 7884 7888 7892 7896 7900 7904 7908 7912 7916 7920 7924 7928 7932 7936 7940 7944 7948 7952 7956 7960 7964 7968 7972 7976 7980 7984 7988 7992 7996 8000 8004 8008 8012 8016 8020 8024 8028 8032 8036 8040 8044 8048 8052 8056 8060 8064 8068 8072 8076 8080 8084 8088 8092 8096 8100 8104 8108 8112 8116 8120 8124 8128 8132 8136 8140 8144 8148 8152 8156 8160 8164 8168 8172 8176 8180 8184 8188 8192 8196 8200 8204 8208 8212 8216 8220 8224 8228 8232 8236 8240 8244 8248 8252 8256 8260 8264 8268 8272 8276 8280 8284 8288 8292 8296 8300 8304 8308 8312 8316 8320 8324 8328 8332 8336 8340 8344 8348 8352 8356 8360 8364 8368 8372 8376 8380 8384 8388 8392 8396 8400 8404 8408 8412 8416 8420 8424 8428 8432 8436 8440 8444 8448 8452 8456 8460 8464 8468 8472 8476 8480 8484 8488 8492 8496 8500 8504 8508 8512 8516 8520 8524 8528 8532 8536 8540 8544 8548 8552 8556 8560 8564 8568 8572 8576 8580 8584 8588 8592 8596 8600 8604 8608 8612 8616 8620 8624 8628 8632 8636 8640 8644 8648 8652 8656 8660 8664 8668 8672 8676 8680 8684 8688 8692 8696 8700 8704 8708 8712 8716 8720 8724 8728 8732 8736 8740 8744 8748 8752 8756 8760 8764 8768 8772 8776 8780 8784 8788 8792 8796 8800 8804 8808 8812 8816 8820 8824 8828 8832 8836 8840 8844 8848 8852 8856 8860 8864 8868 8872 8876 8880 8884 8888 8892 8896 8900 8904 8908 8912 8916 8920 8924 8928 8932 8936 8940 8944 8948 8952 8956 8960 8964 8968 8972 8976 8980 8984 8988 8992 8996 9000 9004 9008 9012 9016 9020 9024 9028 9032 9036 9040 9044 9048 9052 9056 9060 9064 9068 9072 9076 9080 9084 9088 9092 9096 9100 9104 9108 9112 9116 9120 9124 9128 9132 9136 9140 9144 9148 9152 9156 9160 9164 9168 9172 9176 9180 9184 9188 9192 9196 9200 9204 9208 9212 9216 9220 9224 9228 9232 9236 9240 9244 9248 9252 9256 9260 9264 9268 9272 9276 9280 9284 9288 9292 9296 9300 9304 9308 9312 9316 9320 9324 9328 9332 9336 9340 9344 9348 9352 9356 9360 9364 9368 9372 9376 9380 9384 9388 9392 9396 9400 9404 9408 9412 9416 9420 9424 9428 9432 9436 9440 9444 9448 9452 9456 9460 9464 9468 9472 9476 9480 9484 9488 9492 9496 9500 9504 9508 9512 9516 9520 9524 9528 9532 9536 9540 9544 9548 9552 9556 9560 9564 9568 9572 9576 9580 9584 9588 9592 9596 9600 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2404 2408 2412 2416 2420 2424 2428 2432 2436 2440 2444 2448 2452 2456 2460 2464 2468 2472 2476 2480 2484 2488 2492 2496 2500 2504 2508 2512 2516 2520 2524 2528 2532 2536 2540 2544 2548 2552 2556 2560 2564 2568 2572 2576 2580 2584 2588 2592 2596 2600 2604 2608 2612 2616 2620 2624 2628 2632 2636 2640 2644 2648 2652 2656 2660 2664 2668 2672 2676 2680 2684 2688 2692 2696 2700 2704 2708 2712 2716 2720 2724 2728 2732 2736 2740 2744 2748 2752 2756 2760 2764 2768 2772 2776 2780 2784 2788 2792 2796 2800 2804 2808 2812 2816 2820 2824 2828 2832 2836 2840 2844 2848 2852 2856 2860 2864 2868 2872 2876 2880 2884 2888 2892 2896 2900 2904 2908 2912 2916 2920 2924 2928 2932 2936 2940 2944 2948 2952 2956 2960 2964 2968 2972 2976 2980 2984 2988 2992 2996 3000 3004 3008 3012 3016 3020 3024 3028 3032 3036 3040 3044 3048 3052 3056 3060 3064 3068 3072 3076 3080 3084 3088 3092 3096 3100 3104 3108 3112 3116 3120 3124 3128 3132 3136 3140 3144 3148 3152 3156 3160 3164 3168 3172 3176 3180 3184 3188 3192 3196 3200 3204 3208 3212 3216 3220 3224 3228 3232 3236 3240 3244 3248 3252 3256 3260 3264 3268 3272 3276 3280 3284 3288 3292 3296 3300 3304 3308 3312 3316 3320 3324 3328 3332 3336 3340 3344 3348 3352 3356 3360 3364 3368 3372 3376 3380 3384 3388 3392 3396 3400 3404 3408 3412 3416 3420 3424 3428 3432 3436 3440 3444 3448 3452 3456 3460 3464 3468 3472 3476 3480 3484 3488 3492 3496 3500 3504 3508 3512 3516 3520 3524 3528 3532 3536 3540 3544 3548 3552 3556 3560 3564 3568 3572 3576 3580 3584 3588 3592 3596 3600 3604 3608 3612 3616 3620 3624 3628 3632 3636 3640 3644 3648 3652 3656 3660 3664 3668 3672 3676 3680 3684 3688 3692 3696 3700 3704 3708 3712 3716 3720 3724 3728 3732 3736 3740 3744 3748 3752 3756 3760 3764 3768 3772 3776 3780 3784 3788 3792 3796 3800 3804 3808 3812 3816 3820 3824 3828 3832 3836 3840 3844 3848 3852 3856 3860 3864 3868 3872 3876 3880 3884 3888 3892 3896 3900 3904 3908 3912 3916 3920 3924 3928 3932 3936 3940 3944 3948 3952 3956 3960 3964 3968 3972 3976 3980 3984 3988 3992 3996 4000 4004 4008 4012 4016 4020 4024 4028 4032 4036 4040 4044 4048 4052 4056 4060 4064 4068 4072 4076 4080 4084 4088 4092 4096 4100 4104 4108 4112 4116 4120 4124 4128 4132 4136 4140 4144 4148 4152 4156 4160 4164 4168 4172 4176 4180 4184 4188 4192 4196 4200 4204 4208 4212 4216 4220 4224 4228 4232 4236 4240 4244 4248 4252 4256 4260 4264 4268 4272 4276 4280 4284 4288 4292 4296 4300 4304 4308 4312 4316 4320 4324 4328 4332 4336 4340 4344 4348 4352 4356 4360 4364 4368 4372 4376 4380 4384 4388 4392 4396 4400 4404 4408 4412 4416 4420 4424 4428 4432 4436 4440 4444 4448 4452 4456 4460 4464 4468 4472 4476 4480 4484 4488 4492 4496 4500 4504 4508 4512 4516 4520 4524 4528 4532 4536 4540 4544 4548 4552 4556 4560 4564 4568 4572 4576 4580 4584 4588 4592 4596 4600 4604 4608 4612 4616 4620 4624 4628 4632 4636 4640 4644 4648 4652 4656 4660 4664 4668 4672 4676 4680 4684 4688 4692 4696 4700 4704 4708 4712 4716 4720 4724 4728 4732 4736 4740 4744 4748 4752 4756 4760 4764 4768 4772 4776 4780 4784 4788 4792 4796 4800 4804 4808 4812 4816 4820 4824 4828 4832 4836 4840 4844 4848 4852 4856 4860 4864 4868 4872 4876 4880 4884 4888 4892 4896 4900 4904 4908 4912 4916 4920 4924 4928 4932 4936 4940 4944 4948 4952 4956 4960 4964 4968 4972 4976 4980 4984 4988 4992 4996 5000 5004 5008 5012 5016 5020 5024 5028 5032 5036 5040 5044 5048 5052 5056 5060 5064 5068 5072 5076 5080 5084 5088 5092 5096 5100 5104 5108 5112 5116 5120 5124 5128 5132 5136 5140 5144 5148 5152 5156 5160 5164 5168 5172 5176 5180 5184 5188 5192 5196 5200 5204 5208 5212 5216 5220 5224 5228 5232 5236 5240 5244 5248 5252 5256 5260 5264 5268 5272 5276 5280 5284 5288 5292 5296 5300 5304 5308 5312 5316 5320 5324 5328 5332 5336 5340 5344 5348 5352 5356 5360 5364 5368 5372 5376 5380 5384 5388 5392 5396 5400 5404 5408 5412 5416 5420 5424 5428 5432 5436 5440 5444 5448 5452 5456 5460 5464 5468 5472 5476 5480 5484 5488 5492 5496 5500 5504 5508 5512 5516 5520 5524 5528 5532 5536 5540 5544 5548 5552 5556 5560 5564 5568 5572 5576 5580 5584 5588 5592 5596 5600 5604 5608 5612 5616 5620 5624 5628 5632 5636 5640 5644 5648 5652 5656 5660 5664 5668 5672 5676 5680 5684 5688 5692 5696 5700 5704 5708 5712 5716 5720 5724 5728 5732 5736 5740 5744 5748 5752 5756 5760 5764 5768 5772 5776 5780 5784 5788 5792 5796 5800 5804 5808 5812 5816 5820 5824 5828 5832 5836 5840 5844 5848 5852 5856 5860 5864 5868 5872 5876 5880 5884 5888 5892 5896 5900 5904 5908 5912 5916 5920 5924 5928 5932 5936 5940 5944 5948 5952 5956 5960 5964 5968 5972 5976 5980 5984 5988 5992 5996 6000 | \ + N 10079 10078 10138:10139 10078 10081 10140 10138 10081 10083 10141 10140 10083 10085 10142 10141 10085 10087 10143 10142 10087 10089 10144 10143 10089 10091 10145 10144 10091 10093 10146 10145 10093 10095 10147 10146 10095 10097 10148 10147 10097 10099 10149 10148 10099 10101 10150 10149 10101 10103 10151 10150 10103 10105 10152 10151 10105 10107 10153 10152 10107 10109 10154 10153 10109 10111 10155 10154 10111 10113 10156 10155 10113 10115 10157 10156 10115 10117 10158 10157 10117 10119 10159 10158 10119 10121 10160 10159 10121 10123 10161 10160 10123 10125 10162 10161 10125 10127 10163 10162 10127 10129 10164 10163 10129 10131 10165 10164 10131 10133 10166 10165 10133 10135 10167 10166 10135 10137 10168 10167 10139 10138 10169:10170 \ + 10138 10140 10171 10169 10140:10141 10172 10171 10141:10142 \ + 10173 10172 10142:10143 10174 10173 10143:10144 10175 10174 10144:10145 \ + 10176 10175 10145:10146 10177 10176 10146:10147 10178 10177 10147:10148 \ + 10179 10178 10148:10149 10180 10179 10149:10150 10181 10180 10150:10151 \ + 10182 10181 10151:10152 10183 10182 10152:10153 10184 10183 10153:10154 \ + 10185 10184 10154:10155 10186 10185 10155:10156 10187 10186 10156:10157 \ + 10188 10187 10157:10158 10189 10188 10158:10159 10190 10189 10159:10160 \ + 10191 10190 10160:10161 10192 10191 10161:10162 10193 10192 10162:10163 \ + 10194 10193 10163:10164 10195 10194 10164:10165 10196 10195 10165:10166 \ + 10197 10196 10166:10167 10198 10197 10167:10168 10199 10198 10170 10169 10200:10201 \ + 10169 10171 10202 10200 10171:10172 10203 10202 10172:10173 \ + 10204 10203 10173:10174 10205 10204 10174:10175 10206 10205 10175:10176 \ + 10207 10206 10176:10177 10208 10207 10177:10178 10209 10208 10178:10179 \ + 10210 10209 10179:10180 10211 10210 10180:10181 10212 10211 10181:10182 \ + 10213 10212 10182:10183 10214 10213 10183:10184 10215 10214 10184:10185 \ + 10216 10215 10185:10186 10217 10216 10186:10187 10218 10217 10187:10188 \ + 10219 10218 10188:10189 10220 10219 10189:10190 10221 10220 10190:10191 \ + 10222 10221 10191:10192 10223 10222 10192:10193 10224 10223 10193:10194 \ + 10225 10224 10194:10195 10226 10225 10195:10196 10227 10226 10196:10197 \ + 10228 10227 10197:10198 10229 10228 10198:10199 10230 10229 10201 10200 11161:11162 \ + 10200 10202 11163 11161 10202:10203 11164 11163 10203:10204 \ + 11165 11164 10204:10205 11166 11165 10205:10206 11167 11166 10206:10207 \ + 11168 11167 10207:10208 11169 11168 10208:10209 11170 11169 10209:10210 \ + 11171 11170 10210:10211 11172 11171 10211:10212 11173 11172 10212:10213 \ + 11174 11173 10213:10214 11175 11174 10214:10215 11176 11175 10215:10216 \ + 11177 11176 10216:10217 11178 11177 10217:10218 11179 11178 10218:10219 \ + 11180 11179 10219:10220 11181 11180 10220:10221 11182 11181 10221:10222 \ + 11183 11182 10222:10223 11184 11183 10223:10224 11185 11184 10224:10225 \ + 11186 11185 10225:10226 11187 11186 10226:10227 11188 11187 10227:10228 \ + 11189 11188 10228:10229 11190 11189 10229:10230 11191 11190 11162 11161 11192:11193 \ + 11161 11163 11194 11192 11163:11164 11195 11194 11164:11165 \ + 11196 11195 11165:11166 11197 11196 11166:11167 11198 11197 11167:11168 \ + 11199 11198 11168:11169 11200 11199 11169:11170 11201 11200 11170:11171 \ + 11202 11201 11171:11172 11203 11202 11172:11173 11204 11203 11173:11174 \ + 11205 11204 11174:11175 11206 11205 11175:11176 11207 11206 11176:11177 \ + 11208 11207 11177:11178 11209 11208 11178:11179 11210 11209 11179:11180 \ + 11211 11210 11180:11181 11212 11211 11181:11182 11213 11212 11182:11183 \ + 11214 11213 11183:11184 11215 11214 11184:11185 11216 11215 11185:11186 \ + 11217 11216 11186:11187 11218 11217 11187:11188 11219 11218 11188:11189 \ + 11220 11219 11189:11190 11221 11220 11190:11191 11222 11221 11193 11192 11223:11224 \ + 11192 11194 11225 11223 11194:11195 11226 11225 11195:11196 \ + 11227 11226 11196:11197 11228 11227 11197:11198 11229 11228 11198:11199 \ + 11230 11229 11199:11200 11231 11230 11200:11201 11232 11231 11201:11202 \ + 11233 11232 11202:11203 11234 11233 11203:11204 11235 11234 11204:11205 \ + 11236 11235 11205:11206 11237 11236 11206:11207 11238 11237 11207:11208 \ + 11239 11238 11208:11209 11240 11239 11209:11210 11241 11240 11210:11211 \ + 11242 11241 11211:11212 11243 11242 11212:11213 11244 11243 11213:11214 \ + 11245 11244 11214:11215 11246 11245 11215:11216 11247 11246 11216:11217 \ + 11248 11247 11217:11218 11249 11248 11218:11219 11250 11249 11219:11220 \ + 11251 11250 11220:11221 11252 11251 11221:11222 11253 11252 11224 11223 11254:11255 \ + 11223 11225 11256 11254 11225:11226 11257 11256 11226:11227 \ + 11258 11257 11227:11228 11259 11258 11228:11229 11260 11259 11229:11230 \ + 11261 11260 11230:11231 11262 11261 11231:11232 11263 11262 11232:11233 \ + 11264 11263 11233:11234 11265 11264 11234:11235 11266 11265 11235:11236 \ + 11267 11266 11236:11237 11268 11267 11237:11238 11269 11268 11238:11239 \ + 11270 11269 11239:11240 11271 11270 11240:11241 11272 11271 11241:11242 \ + 11273 11272 11242:11243 11274 11273 11243:11244 11275 11274 11244:11245 \ + 11276 11275 11245:11246 11277 11276 11246:11247 11278 11277 11247:11248 \ + 11279 11278 11248:11249 11280 11279 11249:11250 11281 11280 11250:11251 \ + 11282 11281 11251:11252 11283 11282 11252:11253 11284 11283 11255 11254 11285:11286 \ + 11254 11256 11287 11285 11256:11257 11288 11287 11257:11258 \ + 11289 11288 11258:11259 11290 11289 11259:11260 11291 11290 11260:11261 \ + 11292 11291 11261:11262 11293 11292 11262:11263 11294 11293 11263:11264 \ + 11295 11294 11264:11265 11296 11295 11265:11266 11297 11296 11266:11267 \ + 11298 11297 11267:11268 11299 11298 11268:11269 11300 11299 11269:11270 \ + 11301 11300 11270:11271 11302 11301 11271:11272 11303 11302 11272:11273 \ + 11304 11303 11273:11274 11305 11304 11274:11275 11306 11305 11275:11276 \ + 11307 11306 11276:11277 11308 11307 11277:11278 11309 11308 11278:11279 \ + 11310 11309 11279:11280 11311 11310 11280:11281 11312 11311 11281:11282 \ + 11313 11312 11282:11283 11314 11313 11283:11284 11315 11314 11286 11285 11316:11317 \ + 11285 11287 11318 11316 11287:11288 11319 11318 11288:11289 \ + 11320 11319 11289:11290 11321 11320 11290:11291 11322 11321 11291:11292 \ + 11323 11322 11292:11293 11324 11323 11293:11294 11325 11324 11294:11295 \ + 11326 11325 11295:11296 11327 11326 11296:11297 11328 11327 11297:11298 \ + 11329 11328 11298:11299 11330 11329 11299:11300 11331 11330 11300:11301 \ + 11332 11331 11301:11302 11333 11332 11302:11303 11334 11333 11303:11304 \ + 11335 11334 11304:11305 11336 11335 11305:11306 11337 11336 11306:11307 \ + 11338 11337 11307:11308 11339 11338 11308:11309 11340 11339 11309:11310 \ + 11341 11340 11310:11311 11342 11341 11311:11312 11343 11342 11312:11313 \ + 11344 11343 11313:11314 11345 11344 11314:11315 11346 11345 11317 11316 11347:11348 \ + 11316 11318 11349 11347 11318:11319 11350 11349 11319:11320 \ + 11351 11350 11320:11321 11352 11351 11321:11322 11353 11352 11322:11323 \ + 11354 11353 11323:11324 11355 11354 11324:11325 11356 11355 11325:11326 \ + 11357 11356 11326:11327 11358 11357 11327:11328 11359 11358 11328:11329 \ + 11360 11359 11329:11330 11361 11360 11330:11331 11362 11361 11331:11332 \ + 11363 11362 11332:11333 11364 11363 11333:11334 11365 11364 11334:11335 \ + 11366 11365 11335:11336 11367 11366 11336:11337 11368 11367 11337:11338 \ + 11369 11368 11338:11339 11370 11369 11339:11340 11371 11370 11340:11341 \ + 11372 11371 11341:11342 11373 11372 11342:11343 11374 11373 11343:11344 \ + 11375 11374 11344:11345 11376 11375 11345:11346 11377 11376 11348 11347 11378:11379 \ + 11347 11349 11380 11378 11349:11350 11381 11380 11350:11351 \ + 11382 11381 11351:11352 11383 11382 11352:11353 11384 11383 11353:11354 \ + 11385 11384 11354:11355 11386 11385 11355:11356 11387 11386 11356:11357 \ + 11388 11387 11357:11358 11389 11388 11358:11359 11390 11389 11359:11360 \ + 11391 11390 11360:11361 11392 11391 11361:11362 11393 11392 11362:11363 \ + 11394 11393 11363:11364 11395 11394 11364:11365 11396 11395 11365:11366 \ + 11397 11396 11366:11367 11398 11397 11367:11368 11399 11398 11368:11369 \ + 11400 11399 11369:11370 11401 11400 11370:11371 11402 11401 11371:11372 \ + 11403 11402 11372:11373 11404 11403 11373:11374 11405 11404 11374:11375 \ + 11406 11405 11375:11376 11407 11406 11376:11377 11408 11407 11379 11378 11409:11410 \ + 11378 11380 11411 11409 11380:11381 11412 11411 11381:11382 \ + 11413 11412 11382:11383 11414 11413 11383:11384 11415 11414 11384:11385 \ + 11416 11415 11385:11386 11417 11416 11386:11387 11418 11417 11387:11388 \ + 11419 11418 11388:11389 11420 11419 11389:11390 11421 11420 11390:11391 \ + 11422 11421 11391:11392 11423 11422 11392:11393 11424 11423 11393:11394 \ + 11425 11424 11394:11395 11426 11425 11395:11396 11427 11426 11396:11397 \ + 11428 11427 11397:11398 11429 11428 11398:11399 11430 11429 11399:11400 \ + 11431 11430 11400:11401 11432 11431 11401:11402 11433 11432 11402:11403 \ + 11434 11433 11403:11404 11435 11434 11404:11405 11436 11435 11405:11406 \ + 11437 11436 11406:11407 11438 11437 11407:11408 11439 11438 11410 11409 11440:11441 \ + 11409 11411 11442 11440 11411:11412 11443 11442 11412:11413 \ + 11444 11443 11413:11414 11445 11444 11414:11415 11446 11445 11415:11416 \ + 11447 11446 11416:11417 11448 11447 11417:11418 11449 11448 11418:11419 \ + 11450 11449 11419:11420 11451 11450 11420:11421 11452 11451 11421:11422 \ + 11453 11452 11422:11423 11454 11453 11423:11424 11455 11454 11424:11425 \ + 11456 11455 11425:11426 11457 11456 11426:11427 11458 11457 11427:11428 \ + 11459 11458 11428:11429 11460 11459 11429:11430 11461 11460 11430:11431 \ + 11462 11461 11431:11432 11463 11462 11432:11433 11464 11463 11433:11434 \ + 11465 11464 11434:11435 11466 11465 11435:11436 11467 11466 11436:11437 \ + 11468 11467 11437:11438 11469 11468 11438:11439 11470 11469 11441 11440 11471:11472 \ + 11440 11442 11473 11471 11442:11443 11474 11473 11443:11444 \ + 11475 11474 11444:11445 11476 11475 11445:11446 11477 11476 11446:11447 \ + 11478 11477 11447:11448 11479 11478 11448:11449 11480 11479 11449:11450 \ + 11481 11480 11450:11451 11482 11481 11451:11452 11483 11482 11452:11453 \ + 11484 11483 11453:11454 11485 11484 11454:11455 11486 11485 11455:11456 \ + 11487 11486 11456:11457 11488 11487 11457:11458 11489 11488 11458:11459 \ + 11490 11489 11459:11460 11491 11490 11460:11461 11492 11491 11461:11462 \ + 11493 11492 11462:11463 11494 11493 11463:11464 11495 11494 11464:11465 \ + 11496 11495 11465:11466 11497 11496 11466:11467 11498 11497 11467:11468 \ + 11499 11498 11468:11469 11500 11499 11469:11470 11501 11500 11472 11471 11502:11503 \ + 11471 11473 11504 11502 11473:11474 11505 11504 11474:11475 \ + 11506 11505 11475:11476 11507 11506 11476:11477 11508 11507 11477:11478 \ + 11509 11508 11478:11479 11510 11509 11479:11480 11511 11510 11480:11481 \ + 11512 11511 11481:11482 11513 11512 11482:11483 11514 11513 11483:11484 \ + 11515 11514 11484:11485 11516 11515 11485:11486 11517 11516 11486:11487 \ + 11518 11517 11487:11488 11519 11518 11488:11489 11520 11519 11489:11490 \ + 11521 11520 11490:11491 11522 11521 11491:11492 11523 11522 11492:11493 \ + 11524 11523 11493:11494 11525 11524 11494:11495 11526 11525 11495:11496 \ + 11527 11526 11496:11497 11528 11527 11497:11498 11529 11528 11498:11499 \ + 11530 11529 11499:11500 11531 11530 11500:11501 11532 11531 11503 11502 11533:11534 \ + 11502 11504 11535 11533 11504:11505 11536 11535 11505:11506 \ + 11537 11536 11506:11507 11538 11537 11507:11508 11539 11538 11508:11509 \ + 11540 11539 11509:11510 11541 11540 11510:11511 11542 11541 11511:11512 \ + 11543 11542 11512:11513 11544 11543 11513:11514 11545 11544 11514:11515 \ + 11546 11545 11515:11516 11547 11546 11516:11517 11548 11547 11517:11518 \ + 11549 11548 11518:11519 11550 11549 11519:11520 11551 11550 11520:11521 \ + 11552 11551 11521:11522 11553 11552 11522:11523 11554 11553 11523:11524 \ + 11555 11554 11524:11525 11556 11555 11525:11526 11557 11556 11526:11527 \ + 11558 11557 11527:11528 11559 11558 11528:11529 11560 11559 11529:11530 \ + 11561 11560 11530:11531 11562 11561 11531:11532 11563 11562 11534 11533 11564:11565 \ + 11533 11535 11566 11564 11535:11536 11567 11566 11536:11537 \ + 11568 11567 11537:11538 11569 11568 11538:11539 11570 11569 11539:11540 \ + 11571 11570 11540:11541 11572 11571 11541:11542 11573 11572 11542:11543 \ + 11574 11573 11543:11544 11575 11574 11544:11545 11576 11575 11545:11546 \ + 11577 11576 11546:11547 11578 11577 11547:11548 11579 11578 11548:11549 \ + 11580 11579 11549:11550 11581 11580 11550:11551 11582 11581 11551:11552 \ + 11583 11582 11552:11553 11584 11583 11553:11554 11585 11584 11554:11555 \ + 11586 11585 11555:11556 11587 11586 11556:11557 11588 11587 11557:11558 \ + 11589 11588 11558:11559 11590 11589 11559:11560 11591 11590 11560:11561 \ + 11592 11591 11561:11562 11593 11592 11562:11563 11594 11593 11565 11564 11595:11596 \ + 11564 11566 11597 11595 11566:11567 11598 11597 11567:11568 \ + 11599 11598 11568:11569 11600 11599 11569:11570 11601 11600 11570:11571 \ + 11602 11601 11571:11572 11603 11602 11572:11573 11604 11603 11573:11574 \ + 11605 11604 11574:11575 11606 11605 11575:11576 11607 11606 11576:11577 \ + 11608 11607 11577:11578 11609 11608 11578:11579 11610 11609 11579:11580 \ + 11611 11610 11580:11581 11612 11611 11581:11582 11613 11612 11582:11583 \ + 11614 11613 11583:11584 11615 11614 11584:11585 11616 11615 11585:11586 \ + 11617 11616 11586:11587 11618 11617 11587:11588 11619 11618 11588:11589 \ + 11620 11619 11589:11590 11621 11620 11590:11591 11622 11621 11591:11592 \ + 11623 11622 11592:11593 11624 11623 11593:11594 11625 11624 11596 11595 11626:11627 \ + 11595 11597 11628 11626 11597:11598 11629 11628 11598:11599 \ + 11630 11629 11599:11600 11631 11630 11600:11601 11632 11631 11601:11602 \ + 11633 11632 11602:11603 11634 11633 11603:11604 11635 11634 11604:11605 \ + 11636 11635 11605:11606 11637 11636 11606:11607 11638 11637 11607:11608 \ + 11639 11638 11608:11609 11640 11639 11609:11610 11641 11640 11610:11611 \ + 11642 11641 11611:11612 11643 11642 11612:11613 11644 11643 11613:11614 \ + 11645 11644 11614:11615 11646 11645 11615:11616 11647 11646 11616:11617 \ + 11648 11647 11617:11618 11649 11648 11618:11619 11650 11649 11619:11620 \ + 11651 11650 11620:11621 11652 11651 11621:11622 11653 11652 11622:11623 \ + 11654 11653 11623:11624 11655 11654 11624:11625 11656 11655 11627 11626 11657:11658 \ + 11626 11628 11659 11657 11628:11629 11660 11659 11629:11630 \ + 11661 11660 11630:11631 11662 11661 11631:11632 11663 11662 11632:11633 \ + 11664 11663 11633:11634 11665 11664 11634:11635 11666 11665 11635:11636 \ + 11667 11666 11636:11637 11668 11667 11637:11638 11669 11668 11638:11639 \ + 11670 11669 11639:11640 11671 11670 11640:11641 11672 11671 11641:11642 \ + 11673 11672 11642:11643 11674 11673 11643:11644 11675 11674 11644:11645 \ + 11676 11675 11645:11646 11677 11676 11646:11647 11678 11677 11647:11648 \ + 11679 11678 11648:11649 11680 11679 11649:11650 11681 11680 11650:11651 \ + 11682 11681 11651:11652 11683 11682 11652:11653 11684 11683 11653:11654 \ + 11685 11684 11654:11655 11686 11685 11655:11656 11687 11686 11658 11657 11688:11689 \ + 11657 11659 11690 11688 11659:11660 11691 11690 11660:11661 \ + 11692 11691 11661:11662 11693 11692 11662:11663 11694 11693 11663:11664 \ + 11695 11694 11664:11665 11696 11695 11665:11666 11697 11696 11666:11667 \ + 11698 11697 11667:11668 11699 11698 11668:11669 11700 11699 11669:11670 \ + 11701 11700 11670:11671 11702 11701 11671:11672 11703 11702 11672:11673 \ + 11704 11703 11673:11674 11705 11704 11674:11675 11706 11705 11675:11676 \ + 11707 11706 11676:11677 11708 11707 11677:11678 11709 11708 11678:11679 \ + 11710 11709 11679:11680 11711 11710 11680:11681 11712 11711 11681:11682 \ + 11713 11712 11682:11683 11714 11713 11683:11684 11715 11714 11684:11685 \ + 11716 11715 11685:11686 11717 11716 11686:11687 11718 11717 11689 11688 11719:11720 \ + 11688 11690 11721 11719 11690:11691 11722 11721 11691:11692 \ + 11723 11722 11692:11693 11724 11723 11693:11694 11725 11724 11694:11695 \ + 11726 11725 11695:11696 11727 11726 11696:11697 11728 11727 11697:11698 \ + 11729 11728 11698:11699 11730 11729 11699:11700 11731 11730 11700:11701 \ + 11732 11731 11701:11702 11733 11732 11702:11703 11734 11733 11703:11704 \ + 11735 11734 11704:11705 11736 11735 11705:11706 11737 11736 11706:11707 \ + 11738 11737 11707:11708 11739 11738 11708:11709 11740 11739 11709:11710 \ + 11741 11740 11710:11711 11742 11741 11711:11712 11743 11742 11712:11713 \ + 11744 11743 11713:11714 11745 11744 11714:11715 11746 11745 11715:11716 \ + 11747 11746 11716:11717 11748 11747 11717:11718 11749 11748 11720 11719 11750:11751 \ + 11719 11721 11752 11750 11721:11722 11753 11752 11722:11723 \ + 11754 11753 11723:11724 11755 11754 11724:11725 11756 11755 11725:11726 \ + 11757 11756 11726:11727 11758 11757 11727:11728 11759 11758 11728:11729 \ + 11760 11759 11729:11730 11761 11760 11730:11731 11762 11761 11731:11732 \ + 11763 11762 11732:11733 11764 11763 11733:11734 11765 11764 11734:11735 \ + 11766 11765 11735:11736 11767 11766 11736:11737 11768 11767 11737:11738 \ + 11769 11768 11738:11739 11770 11769 11739:11740 11771 11770 11740:11741 \ + 11772 11771 11741:11742 11773 11772 11742:11743 11774 11773 11743:11744 \ + 11775 11774 11744:11745 11776 11775 11745:11746 11777 11776 11746:11747 \ + 11778 11777 11747:11748 11779 11778 11748:11749 11780 11779 11751 11750 11781:11782 \ + 11750 11752 11783 11781 11752:11753 11784 11783 11753:11754 \ + 11785 11784 11754:11755 11786 11785 11755:11756 11787 11786 11756:11757 \ + 11788 11787 11757:11758 11789 11788 11758:11759 11790 11789 11759:11760 \ + 11791 11790 11760:11761 11792 11791 11761:11762 11793 11792 11762:11763 \ + 11794 11793 11763:11764 11795 11794 11764:11765 11796 11795 11765:11766 \ + 11797 11796 11766:11767 11798 11797 11767:11768 11799 11798 11768:11769 \ + 11800 11799 11769:11770 11801 11800 11770:11771 11802 11801 11771:11772 \ + 11803 11802 11772:11773 11804 11803 11773:11774 11805 11804 11774:11775 \ + 11806 11805 11775:11776 11807 11806 11776:11777 11808 11807 11777:11778 \ + 11809 11808 11778:11779 11810 11809 11779:11780 11811 11810 11782 11781 11812:11813 \ + 11781 11783 11814 11812 11783:11784 11815 11814 11784:11785 \ + 11816 11815 11785:11786 11817 11816 11786:11787 11818 11817 11787:11788 \ + 11819 11818 11788:11789 11820 11819 11789:11790 11821 11820 11790:11791 \ + 11822 11821 11791:11792 11823 11822 11792:11793 11824 11823 11793:11794 \ + 11825 11824 11794:11795 11826 11825 11795:11796 11827 11826 11796:11797 \ + 11828 11827 11797:11798 11829 11828 11798:11799 11830 11829 11799:11800 \ + 11831 11830 11800:11801 11832 11831 11801:11802 11833 11832 11802:11803 \ + 11834 11833 11803:11804 11835 11834 11804:11805 11836 11835 11805:11806 \ + 11837 11836 11806:11807 11838 11837 11807:11808 11839 11838 11808:11809 \ + 11840 11839 11809:11810 11841 11840 11810:11811 11842 11841 11813 11812 11843:11844 \ + 11812 11814 11845 11843 11814:11815 11846 11845 11815:11816 \ + 11847 11846 11816:11817 11848 11847 11817:11818 11849 11848 11818:11819 \ + 11850 11849 11819:11820 11851 11850 11820:11821 11852 11851 11821:11822 \ + 11853 11852 11822:11823 11854 11853 11823:11824 11855 11854 11824:11825 \ + 11856 11855 11825:11826 11857 11856 11826:11827 11858 11857 11827:11828 \ + 11859 11858 11828:11829 11860 11859 11829:11830 11861 11860 11830:11831 \ + 11862 11861 11831:11832 11863 11862 11832:11833 11864 11863 11833:11834 \ + 11865 11864 11834:11835 11866 11865 11835:11836 11867 11866 11836:11837 \ + 11868 11867 11837:11838 11869 11868 11838:11839 11870 11869 11839:11840 \ + 11871 11870 11840:11841 11872 11871 11841:11842 11873 11872 11844 11843 11874:11875 \ + 11843 11845 11876 11874 11845:11846 11877 11876 11846:11847 \ + 11878 11877 11847:11848 11879 11878 11848:11849 11880 11879 11849:11850 \ + 11881 11880 11850:11851 11882 11881 11851:11852 11883 11882 11852:11853 \ + 11884 11883 11853:11854 11885 11884 11854:11855 11886 11885 11855:11856 \ + 11887 11886 11856:11857 11888 11887 11857:11858 11889 11888 11858:11859 \ + 11890 11889 11859:11860 11891 11890 11860:11861 11892 11891 11861:11862 \ + 11893 11892 11862:11863 11894 11893 11863:11864 11895 11894 11864:11865 \ + 11896 11895 11865:11866 11897 11896 11866:11867 11898 11897 11867:11868 \ + 11899 11898 11868:11869 11900 11899 11869:11870 11901 11900 11870:11871 \ + 11902 11901 11871:11872 11903 11902 11872:11873 11904 11903 11875 11874 11905:11906 \ + 11874 11876 11907 11905 11876:11877 11908 11907 11877:11878 \ + 11909 11908 11878:11879 11910 11909 11879:11880 11911 11910 11880:11881 \ + 11912 11911 11881:11882 11913 11912 11882:11883 11914 11913 11883:11884 \ + 11915 11914 11884:11885 11916 11915 11885:11886 11917 11916 11886:11887 \ + 11918 11917 11887:11888 11919 11918 11888:11889 11920 11919 11889:11890 \ + 11921 11920 11890:11891 11922 11921 11891:11892 11923 11922 11892:11893 \ + 11924 11923 11893:11894 11925 11924 11894:11895 11926 11925 11895:11896 \ + 11927 11926 11896:11897 11928 11927 11897:11898 11929 11928 11898:11899 \ + 11930 11929 11899:11900 11931 11930 11900:11901 11932 11931 11901:11902 \ + 11933 11932 11902:11903 11934 11933 11903:11904 11935 11934 11906 11905 11936:11937 \ + 11905 11907 11938 11936 11907:11908 11939 11938 11908:11909 \ + 11940 11939 11909:11910 11941 11940 11910:11911 11942 11941 11911:11912 \ + 11943 11942 11912:11913 11944 11943 11913:11914 11945 11944 11914:11915 \ + 11946 11945 11915:11916 11947 11946 11916:11917 11948 11947 11917:11918 \ + 11949 11948 11918:11919 11950 11949 11919:11920 11951 11950 11920:11921 \ + 11952 11951 11921:11922 11953 11952 11922:11923 11954 11953 11923:11924 \ + 11955 11954 11924:11925 11956 11955 11925:11926 11957 11956 11926:11927 \ + 11958 11957 11927:11928 11959 11958 11928:11929 11960 11959 11929:11930 \ + 11961 11960 11930:11931 11962 11961 11931:11932 11963 11962 11932:11933 \ + 11964 11963 11933:11934 11965 11964 11934:11935 11966 11965 11937 11936 11967:11968 \ + 11936 11938 11969 11967 11938:11939 11970 11969 11939:11940 \ + 11971 11970 11940:11941 11972 11971 11941:11942 11973 11972 11942:11943 \ + 11974 11973 11943:11944 11975 11974 11944:11945 11976 11975 11945:11946 \ + 11977 11976 11946:11947 11978 11977 11947:11948 11979 11978 11948:11949 \ + 11980 11979 11949:11950 11981 11980 11950:11951 11982 11981 11951:11952 \ + 11983 11982 11952:11953 11984 11983 11953:11954 11985 11984 11954:11955 \ + 11986 11985 11955:11956 11987 11986 11956:11957 11988 11987 11957:11958 \ + 11989 11988 11958:11959 11990 11989 11959:11960 11991 11990 11960:11961 \ + 11992 11991 11961:11962 11993 11992 11962:11963 11994 11993 11963:11964 \ + 11995 11994 11964:11965 11996 11995 11965:11966 11997 11996 11968 11967 11998:11999 \ + 11967 11969 12000 11998 11969:11970 12001 12000 11970:11971 \ + 12002 12001 11971:11972 12003 12002 11972:11973 12004 12003 11973:11974 \ + 12005 12004 11974:11975 12006 12005 11975:11976 12007 12006 11976:11977 \ + 12008 12007 11977:11978 12009 12008 11978:11979 12010 12009 11979:11980 \ + 12011 12010 11980:11981 12012 12011 11981:11982 12013 12012 11982:11983 \ + 12014 12013 11983:11984 12015 12014 11984:11985 12016 12015 11985:11986 \ + 12017 12016 11986:11987 12018 12017 11987:11988 12019 12018 11988:11989 \ + 12020 12019 11989:11990 12021 12020 11990:11991 12022 12021 11991:11992 \ + 12023 12022 11992:11993 12024 12023 11993:11994 12025 12024 11994:11995 \ + 12026 12025 11995:11996 12027 12026 11996:11997 12028 12027 11999 11998 12029:12030 \ + 11998 12000 12031 12029 12000:12001 12032 12031 12001:12002 \ + 12033 12032 12002:12003 12034 12033 12003:12004 12035 12034 12004:12005 \ + 12036 12035 12005:12006 12037 12036 12006:12007 12038 12037 12007:12008 \ + 12039 12038 12008:12009 12040 12039 12009:12010 12041 12040 12010:12011 \ + 12042 12041 12011:12012 12043 12042 12012:12013 12044 12043 12013:12014 \ + 12045 12044 12014:12015 12046 12045 12015:12016 12047 12046 12016:12017 \ + 12048 12047 12017:12018 12049 12048 12018:12019 12050 12049 12019:12020 \ + 12051 12050 12020:12021 12052 12051 12021:12022 12053 12052 12022:12023 \ + 12054 12053 12023:12024 12055 12054 12024:12025 12056 12055 12025:12026 \ + 12057 12056 12026:12027 12058 12057 12027:12028 12059 12058 12030 12029 12060:12061 \ + 12029 12031 12062 12060 12031:12032 12063 12062 12032:12033 \ + 12064 12063 12033:12034 12065 12064 12034:12035 12066 12065 12035:12036 \ + 12067 12066 12036:12037 12068 12067 12037:12038 12069 12068 12038:12039 \ + 12070 12069 12039:12040 12071 12070 12040:12041 12072 12071 12041:12042 \ + 12073 12072 12042:12043 12074 12073 12043:12044 12075 12074 12044:12045 \ + 12076 12075 12045:12046 12077 12076 12046:12047 12078 12077 12047:12048 \ + 12079 12078 12048:12049 12080 12079 12049:12050 12081 12080 12050:12051 \ + 12082 12081 12051:12052 12083 12082 12052:12053 12084 12083 12053:12054 \ + 12085 12084 12054:12055 12086 12085 12055:12056 12087 12086 12056:12057 \ + 12088 12087 12057:12058 12089 12088 12058:12059 12090 12089 10076:10079 \ + 10077 10080:10081 10078 10080 10082:10083 10081:10082 \ + 10084:10085 10083:10084 10086:10087 10085:10086 10088:10089 \ + 10087:10088 10090:10091 10089:10090 10092:10093 10091:10092 \ + 10094:10095 10093:10094 10096:10097 10095:10096 10098:10099 \ + 10097:10098 10100:10101 10099:10100 10102:10103 10101:10102 \ + 10104:10105 10103:10104 10106:10107 10105:10106 10108:10109 \ + 10107:10108 10110:10111 10109:10110 10112:10113 10111:10112 \ + 10114:10115 10113:10114 10116:10117 10115:10116 10118:10119 \ + 10117:10118 10120:10121 10119:10120 10122:10123 10121:10122 \ + 10124:10125 10123:10124 10126:10127 10125:10126 10128:10129 \ + 10127:10128 10130:10131 10129:10130 10132:10133 10131:10132 \ + 10134:10135 10133:10134 10136:10137 10135 10231:10234 \ + 10232 10235:10236 10233 10235 10237:10238 10236:10237 \ + 10239:10240 10238:10239 10241:10242 10240:10241 10243:10244 \ + 10242:10243 10245:10246 10244:10245 10247:10248 10246:10247 \ + 10249:10250 10248:10249 10251:10252 10250:10251 10253:10254 \ + 10252:10253 10255:10256 10254:10255 10257:10258 10256:10257 \ + 10259:10260 10258:10259 10261:10262 10260:10261 10263:10264 \ + 10262:10263 10265:10266 10264:10265 10267:10268 10266:10267 \ + 10269:10270 10268:10269 10271:10272 10270:10271 10273:10274 \ + 10272:10273 10275:10276 10274:10275 10277:10278 10276:10277 \ + 10279:10280 10278:10279 10281:10282 10280:10281 10283:10284 \ + 10282:10283 10285:10286 10284:10285 10287:10288 10286:10287 \ + 10289:10290 10288:10289 10291:10292 10290 10234 10233 10293:10294 \ + 10233 10236 10295 10293 10236 10238 10296 10295 10238 10240 10297 10296 10240 10242 10298 10297 10242 10244 10299 10298 10244 10246 10300 10299 10246 10248 10301 10300 10248 10250 10302 10301 10250 10252 10303 10302 10252 10254 10304 10303 10254 10256 10305 10304 10256 10258 10306 10305 10258 10260 10307 10306 10260 10262 10308 10307 10262 10264 10309 10308 10264 10266 10310 10309 10266 10268 10311 10310 10268 10270 10312 10311 10270 10272 10313 10312 10272 10274 10314 10313 10274 10276 10315 10314 10276 10278 10316 10315 10278 10280 10317 10316 10280 10282 10318 10317 10282 10284 10319 10318 10284 10286 10320 10319 10286 10288 10321 10320 10288 10290 10322 10321 10290 10292 10323 10322 10294 10293 10324:10325 \ + 10293 10295 10326 10324 10295:10296 10327 10326 10296:10297 \ + 10328 10327 10297:10298 10329 10328 10298:10299 10330 10329 10299:10300 \ + 10331 10330 10300:10301 10332 10331 10301:10302 10333 10332 10302:10303 \ + 10334 10333 10303:10304 10335 10334 10304:10305 10336 10335 10305:10306 \ + 10337 10336 10306:10307 10338 10337 10307:10308 10339 10338 10308:10309 \ + 10340 10339 10309:10310 10341 10340 10310:10311 10342 10341 10311:10312 \ + 10343 10342 10312:10313 10344 10343 10313:10314 10345 10344 10314:10315 \ + 10346 10345 10315:10316 10347 10346 10316:10317 10348 10347 10317:10318 \ + 10349 10348 10318:10319 10350 10349 10319:10320 10351 10350 10320:10321 \ + 10352 10351 10321:10322 10353 10352 10322:10323 10354 10353 10325 10324 10355:10356 \ + 10324 10326 10357 10355 10326:10327 10358 10357 10327:10328 \ + 10359 10358 10328:10329 10360 10359 10329:10330 10361 10360 10330:10331 \ + 10362 10361 10331:10332 10363 10362 10332:10333 10364 10363 10333:10334 \ + 10365 10364 10334:10335 10366 10365 10335:10336 10367 10366 10336:10337 \ + 10368 10367 10337:10338 10369 10368 10338:10339 10370 10369 10339:10340 \ + 10371 10370 10340:10341 10372 10371 10341:10342 10373 10372 10342:10343 \ + 10374 10373 10343:10344 10375 10374 10344:10345 10376 10375 10345:10346 \ + 10377 10376 10346:10347 10378 10377 10347:10348 10379 10378 10348:10349 \ + 10380 10379 10349:10350 10381 10380 10350:10351 10382 10381 10351:10352 \ + 10383 10382 10352:10353 10384 10383 10353:10354 10385 10384 10356 10355 10386:10387 \ + 10355 10357 10388 10386 10357:10358 10389 10388 10358:10359 \ + 10390 10389 10359:10360 10391 10390 10360:10361 10392 10391 10361:10362 \ + 10393 10392 10362:10363 10394 10393 10363:10364 10395 10394 10364:10365 \ + 10396 10395 10365:10366 10397 10396 10366:10367 10398 10397 10367:10368 \ + 10399 10398 10368:10369 10400 10399 10369:10370 10401 10400 10370:10371 \ + 10402 10401 10371:10372 10403 10402 10372:10373 10404 10403 10373:10374 \ + 10405 10404 10374:10375 10406 10405 10375:10376 10407 10406 10376:10377 \ + 10408 10407 10377:10378 10409 10408 10378:10379 10410 10409 10379:10380 \ + 10411 10410 10380:10381 10412 10411 10381:10382 10413 10412 10382:10383 \ + 10414 10413 10383:10384 10415 10414 10384:10385 10416 10415 10387 10386 10417:10418 \ + 10386 10388 10419 10417 10388:10389 10420 10419 10389:10390 \ + 10421 10420 10390:10391 10422 10421 10391:10392 10423 10422 10392:10393 \ + 10424 10423 10393:10394 10425 10424 10394:10395 10426 10425 10395:10396 \ + 10427 10426 10396:10397 10428 10427 10397:10398 10429 10428 10398:10399 \ + 10430 10429 10399:10400 10431 10430 10400:10401 10432 10431 10401:10402 \ + 10433 10432 10402:10403 10434 10433 10403:10404 10435 10434 10404:10405 \ + 10436 10435 10405:10406 10437 10436 10406:10407 10438 10437 10407:10408 \ + 10439 10438 10408:10409 10440 10439 10409:10410 10441 10440 10410:10411 \ + 10442 10441 10411:10412 10443 10442 10412:10413 10444 10443 10413:10414 \ + 10445 10444 10414:10415 10446 10445 10415:10416 10447 10446 10418 10417 10448:10449 \ + 10417 10419 10450 10448 10419:10420 10451 10450 10420:10421 \ + 10452 10451 10421:10422 10453 10452 10422:10423 10454 10453 10423:10424 \ + 10455 10454 10424:10425 10456 10455 10425:10426 10457 10456 10426:10427 \ + 10458 10457 10427:10428 10459 10458 10428:10429 10460 10459 10429:10430 \ + 10461 10460 10430:10431 10462 10461 10431:10432 10463 10462 10432:10433 \ + 10464 10463 10433:10434 10465 10464 10434:10435 10466 10465 10435:10436 \ + 10467 10466 10436:10437 10468 10467 10437:10438 10469 10468 10438:10439 \ + 10470 10469 10439:10440 10471 10470 10440:10441 10472 10471 10441:10442 \ + 10473 10472 10442:10443 10474 10473 10443:10444 10475 10474 10444:10445 \ + 10476 10475 10445:10446 10477 10476 10446:10447 10478 10477 10449 10448 10479:10480 \ + 10448 10450 10481 10479 10450:10451 10482 10481 10451:10452 \ + 10483 10482 10452:10453 10484 10483 10453:10454 10485 10484 10454:10455 \ + 10486 10485 10455:10456 10487 10486 10456:10457 10488 10487 10457:10458 \ + 10489 10488 10458:10459 10490 10489 10459:10460 10491 10490 10460:10461 \ + 10492 10491 10461:10462 10493 10492 10462:10463 10494 10493 10463:10464 \ + 10495 10494 10464:10465 10496 10495 10465:10466 10497 10496 10466:10467 \ + 10498 10497 10467:10468 10499 10498 10468:10469 10500 10499 10469:10470 \ + 10501 10500 10470:10471 10502 10501 10471:10472 10503 10502 10472:10473 \ + 10504 10503 10473:10474 10505 10504 10474:10475 10506 10505 10475:10476 \ + 10507 10506 10476:10477 10508 10507 10477:10478 10509 10508 10480 10479 10510:10511 \ + 10479 10481 10512 10510 10481:10482 10513 10512 10482:10483 \ + 10514 10513 10483:10484 10515 10514 10484:10485 10516 10515 10485:10486 \ + 10517 10516 10486:10487 10518 10517 10487:10488 10519 10518 10488:10489 \ + 10520 10519 10489:10490 10521 10520 10490:10491 10522 10521 10491:10492 \ + 10523 10522 10492:10493 10524 10523 10493:10494 10525 10524 10494:10495 \ + 10526 10525 10495:10496 10527 10526 10496:10497 10528 10527 10497:10498 \ + 10529 10528 10498:10499 10530 10529 10499:10500 10531 10530 10500:10501 \ + 10532 10531 10501:10502 10533 10532 10502:10503 10534 10533 10503:10504 \ + 10535 10534 10504:10505 10536 10535 10505:10506 10537 10536 10506:10507 \ + 10538 10537 10507:10508 10539 10538 10508:10509 10540 10539 10511 10510 10541:10542 \ + 10510 10512 10543 10541 10512:10513 10544 10543 10513:10514 \ + 10545 10544 10514:10515 10546 10545 10515:10516 10547 10546 10516:10517 \ + 10548 10547 10517:10518 10549 10548 10518:10519 10550 10549 10519:10520 \ + 10551 10550 10520:10521 10552 10551 10521:10522 10553 10552 10522:10523 \ + 10554 10553 10523:10524 10555 10554 10524:10525 10556 10555 10525:10526 \ + 10557 10556 10526:10527 10558 10557 10527:10528 10559 10558 10528:10529 \ + 10560 10559 10529:10530 10561 10560 10530:10531 10562 10561 10531:10532 \ + 10563 10562 10532:10533 10564 10563 10533:10534 10565 10564 10534:10535 \ + 10566 10565 10535:10536 10567 10566 10536:10537 10568 10567 10537:10538 \ + 10569 10568 10538:10539 10570 10569 10539:10540 10571 10570 10542 10541 10572:10573 \ + 10541 10543 10574 10572 10543:10544 10575 10574 10544:10545 \ + 10576 10575 10545:10546 10577 10576 10546:10547 10578 10577 10547:10548 \ + 10579 10578 10548:10549 10580 10579 10549:10550 10581 10580 10550:10551 \ + 10582 10581 10551:10552 10583 10582 10552:10553 10584 10583 10553:10554 \ + 10585 10584 10554:10555 10586 10585 10555:10556 10587 10586 10556:10557 \ + 10588 10587 10557:10558 10589 10588 10558:10559 10590 10589 10559:10560 \ + 10591 10590 10560:10561 10592 10591 10561:10562 10593 10592 10562:10563 \ + 10594 10593 10563:10564 10595 10594 10564:10565 10596 10595 10565:10566 \ + 10597 10596 10566:10567 10598 10597 10567:10568 10599 10598 10568:10569 \ + 10600 10599 10569:10570 10601 10600 10570:10571 10602 10601 10573 10572 10603:10604 \ + 10572 10574 10605 10603 10574:10575 10606 10605 10575:10576 \ + 10607 10606 10576:10577 10608 10607 10577:10578 10609 10608 10578:10579 \ + 10610 10609 10579:10580 10611 10610 10580:10581 10612 10611 10581:10582 \ + 10613 10612 10582:10583 10614 10613 10583:10584 10615 10614 10584:10585 \ + 10616 10615 10585:10586 10617 10616 10586:10587 10618 10617 10587:10588 \ + 10619 10618 10588:10589 10620 10619 10589:10590 10621 10620 10590:10591 \ + 10622 10621 10591:10592 10623 10622 10592:10593 10624 10623 10593:10594 \ + 10625 10624 10594:10595 10626 10625 10595:10596 10627 10626 10596:10597 \ + 10628 10627 10597:10598 10629 10628 10598:10599 10630 10629 10599:10600 \ + 10631 10630 10600:10601 10632 10631 10601:10602 10633 10632 10604 10603 10634:10635 \ + 10603 10605 10636 10634 10605:10606 10637 10636 10606:10607 \ + 10638 10637 10607:10608 10639 10638 10608:10609 10640 10639 10609:10610 \ + 10641 10640 10610:10611 10642 10641 10611:10612 10643 10642 10612:10613 \ + 10644 10643 10613:10614 10645 10644 10614:10615 10646 10645 10615:10616 \ + 10647 10646 10616:10617 10648 10647 10617:10618 10649 10648 10618:10619 \ + 10650 10649 10619:10620 10651 10650 10620:10621 10652 10651 10621:10622 \ + 10653 10652 10622:10623 10654 10653 10623:10624 10655 10654 10624:10625 \ + 10656 10655 10625:10626 10657 10656 10626:10627 10658 10657 10627:10628 \ + 10659 10658 10628:10629 10660 10659 10629:10630 10661 10660 10630:10631 \ + 10662 10661 10631:10632 10663 10662 10632:10633 10664 10663 10635 10634 10665:10666 \ + 10634 10636 10667 10665 10636:10637 10668 10667 10637:10638 \ + 10669 10668 10638:10639 10670 10669 10639:10640 10671 10670 10640:10641 \ + 10672 10671 10641:10642 10673 10672 10642:10643 10674 10673 10643:10644 \ + 10675 10674 10644:10645 10676 10675 10645:10646 10677 10676 10646:10647 \ + 10678 10677 10647:10648 10679 10678 10648:10649 10680 10679 10649:10650 \ + 10681 10680 10650:10651 10682 10681 10651:10652 10683 10682 10652:10653 \ + 10684 10683 10653:10654 10685 10684 10654:10655 10686 10685 10655:10656 \ + 10687 10686 10656:10657 10688 10687 10657:10658 10689 10688 10658:10659 \ + 10690 10689 10659:10660 10691 10690 10660:10661 10692 10691 10661:10662 \ + 10693 10692 10662:10663 10694 10693 10663:10664 10695 10694 10666 10665 10696:10697 \ + 10665 10667 10698 10696 10667:10668 10699 10698 10668:10669 \ + 10700 10699 10669:10670 10701 10700 10670:10671 10702 10701 10671:10672 \ + 10703 10702 10672:10673 10704 10703 10673:10674 10705 10704 10674:10675 \ + 10706 10705 10675:10676 10707 10706 10676:10677 10708 10707 10677:10678 \ + 10709 10708 10678:10679 10710 10709 10679:10680 10711 10710 10680:10681 \ + 10712 10711 10681:10682 10713 10712 10682:10683 10714 10713 10683:10684 \ + 10715 10714 10684:10685 10716 10715 10685:10686 10717 10716 10686:10687 \ + 10718 10717 10687:10688 10719 10718 10688:10689 10720 10719 10689:10690 \ + 10721 10720 10690:10691 10722 10721 10691:10692 10723 10722 10692:10693 \ + 10724 10723 10693:10694 10725 10724 10694:10695 10726 10725 10697 10696 10727:10728 \ + 10696 10698 10729 10727 10698:10699 10730 10729 10699:10700 \ + 10731 10730 10700:10701 10732 10731 10701:10702 10733 10732 10702:10703 \ + 10734 10733 10703:10704 10735 10734 10704:10705 10736 10735 10705:10706 \ + 10737 10736 10706:10707 10738 10737 10707:10708 10739 10738 10708:10709 \ + 10740 10739 10709:10710 10741 10740 10710:10711 10742 10741 10711:10712 \ + 10743 10742 10712:10713 10744 10743 10713:10714 10745 10744 10714:10715 \ + 10746 10745 10715:10716 10747 10746 10716:10717 10748 10747 10717:10718 \ + 10749 10748 10718:10719 10750 10749 10719:10720 10751 10750 10720:10721 \ + 10752 10751 10721:10722 10753 10752 10722:10723 10754 10753 10723:10724 \ + 10755 10754 10724:10725 10756 10755 10725:10726 10757 10756 10728 10727 10758:10759 \ + 10727 10729 10760 10758 10729:10730 10761 10760 10730:10731 \ + 10762 10761 10731:10732 10763 10762 10732:10733 10764 10763 10733:10734 \ + 10765 10764 10734:10735 10766 10765 10735:10736 10767 10766 10736:10737 \ + 10768 10767 10737:10738 10769 10768 10738:10739 10770 10769 10739:10740 \ + 10771 10770 10740:10741 10772 10771 10741:10742 10773 10772 10742:10743 \ + 10774 10773 10743:10744 10775 10774 10744:10745 10776 10775 10745:10746 \ + 10777 10776 10746:10747 10778 10777 10747:10748 10779 10778 10748:10749 \ + 10780 10779 10749:10750 10781 10780 10750:10751 10782 10781 10751:10752 \ + 10783 10782 10752:10753 10784 10783 10753:10754 10785 10784 10754:10755 \ + 10786 10785 10755:10756 10787 10786 10756:10757 10788 10787 10759 10758 10789:10790 \ + 10758 10760 10791 10789 10760:10761 10792 10791 10761:10762 \ + 10793 10792 10762:10763 10794 10793 10763:10764 10795 10794 10764:10765 \ + 10796 10795 10765:10766 10797 10796 10766:10767 10798 10797 10767:10768 \ + 10799 10798 10768:10769 10800 10799 10769:10770 10801 10800 10770:10771 \ + 10802 10801 10771:10772 10803 10802 10772:10773 10804 10803 10773:10774 \ + 10805 10804 10774:10775 10806 10805 10775:10776 10807 10806 10776:10777 \ + 10808 10807 10777:10778 10809 10808 10778:10779 10810 10809 10779:10780 \ + 10811 10810 10780:10781 10812 10811 10781:10782 10813 10812 10782:10783 \ + 10814 10813 10783:10784 10815 10814 10784:10785 10816 10815 10785:10786 \ + 10817 10816 10786:10787 10818 10817 10787:10788 10819 10818 10790 10789 10820:10821 \ + 10789 10791 10822 10820 10791:10792 10823 10822 10792:10793 \ + 10824 10823 10793:10794 10825 10824 10794:10795 10826 10825 10795:10796 \ + 10827 10826 10796:10797 10828 10827 10797:10798 10829 10828 10798:10799 \ + 10830 10829 10799:10800 10831 10830 10800:10801 10832 10831 10801:10802 \ + 10833 10832 10802:10803 10834 10833 10803:10804 10835 10834 10804:10805 \ + 10836 10835 10805:10806 10837 10836 10806:10807 10838 10837 10807:10808 \ + 10839 10838 10808:10809 10840 10839 10809:10810 10841 10840 10810:10811 \ + 10842 10841 10811:10812 10843 10842 10812:10813 10844 10843 10813:10814 \ + 10845 10844 10814:10815 10846 10845 10815:10816 10847 10846 10816:10817 \ + 10848 10847 10817:10818 10849 10848 10818:10819 10850 10849 10821 10820 10851:10852 \ + 10820 10822 10853 10851 10822:10823 10854 10853 10823:10824 \ + 10855 10854 10824:10825 10856 10855 10825:10826 10857 10856 10826:10827 \ + 10858 10857 10827:10828 10859 10858 10828:10829 10860 10859 10829:10830 \ + 10861 10860 10830:10831 10862 10861 10831:10832 10863 10862 10832:10833 \ + 10864 10863 10833:10834 10865 10864 10834:10835 10866 10865 10835:10836 \ + 10867 10866 10836:10837 10868 10867 10837:10838 10869 10868 10838:10839 \ + 10870 10869 10839:10840 10871 10870 10840:10841 10872 10871 10841:10842 \ + 10873 10872 10842:10843 10874 10873 10843:10844 10875 10874 10844:10845 \ + 10876 10875 10845:10846 10877 10876 10846:10847 10878 10877 10847:10848 \ + 10879 10878 10848:10849 10880 10879 10849:10850 10881 10880 10852 10851 10882:10883 \ + 10851 10853 10884 10882 10853:10854 10885 10884 10854:10855 \ + 10886 10885 10855:10856 10887 10886 10856:10857 10888 10887 10857:10858 \ + 10889 10888 10858:10859 10890 10889 10859:10860 10891 10890 10860:10861 \ + 10892 10891 10861:10862 10893 10892 10862:10863 10894 10893 10863:10864 \ + 10895 10894 10864:10865 10896 10895 10865:10866 10897 10896 10866:10867 \ + 10898 10897 10867:10868 10899 10898 10868:10869 10900 10899 10869:10870 \ + 10901 10900 10870:10871 10902 10901 10871:10872 10903 10902 10872:10873 \ + 10904 10903 10873:10874 10905 10904 10874:10875 10906 10905 10875:10876 \ + 10907 10906 10876:10877 10908 10907 10877:10878 10909 10908 10878:10879 \ + 10910 10909 10879:10880 10911 10910 10880:10881 10912 10911 10883 10882 10913:10914 \ + 10882 10884 10915 10913 10884:10885 10916 10915 10885:10886 \ + 10917 10916 10886:10887 10918 10917 10887:10888 10919 10918 10888:10889 \ + 10920 10919 10889:10890 10921 10920 10890:10891 10922 10921 10891:10892 \ + 10923 10922 10892:10893 10924 10923 10893:10894 10925 10924 10894:10895 \ + 10926 10925 10895:10896 10927 10926 10896:10897 10928 10927 10897:10898 \ + 10929 10928 10898:10899 10930 10929 10899:10900 10931 10930 10900:10901 \ + 10932 10931 10901:10902 10933 10932 10902:10903 10934 10933 10903:10904 \ + 10935 10934 10904:10905 10936 10935 10905:10906 10937 10936 10906:10907 \ + 10938 10937 10907:10908 10939 10938 10908:10909 10940 10939 10909:10910 \ + 10941 10940 10910:10911 10942 10941 10911:10912 10943 10942 10914 10913 10944:10945 \ + 10913 10915 10946 10944 10915:10916 10947 10946 10916:10917 \ + 10948 10947 10917:10918 10949 10948 10918:10919 10950 10949 10919:10920 \ + 10951 10950 10920:10921 10952 10951 10921:10922 10953 10952 10922:10923 \ + 10954 10953 10923:10924 10955 10954 10924:10925 10956 10955 10925:10926 \ + 10957 10956 10926:10927 10958 10957 10927:10928 10959 10958 10928:10929 \ + 10960 10959 10929:10930 10961 10960 10930:10931 10962 10961 10931:10932 \ + 10963 10962 10932:10933 10964 10963 10933:10934 10965 10964 10934:10935 \ + 10966 10965 10935:10936 10967 10966 10936:10937 10968 10967 10937:10938 \ + 10969 10968 10938:10939 10970 10969 10939:10940 10971 10970 10940:10941 \ + 10972 10971 10941:10942 10973 10972 10942:10943 10974 10973 10945 10944 10975:10976 \ + 10944 10946 10977 10975 10946:10947 10978 10977 10947:10948 \ + 10979 10978 10948:10949 10980 10979 10949:10950 10981 10980 10950:10951 \ + 10982 10981 10951:10952 10983 10982 10952:10953 10984 10983 10953:10954 \ + 10985 10984 10954:10955 10986 10985 10955:10956 10987 10986 10956:10957 \ + 10988 10987 10957:10958 10989 10988 10958:10959 10990 10989 10959:10960 \ + 10991 10990 10960:10961 10992 10991 10961:10962 10993 10992 10962:10963 \ + 10994 10993 10963:10964 10995 10994 10964:10965 10996 10995 10965:10966 \ + 10997 10996 10966:10967 10998 10997 10967:10968 10999 10998 10968:10969 \ + 11000 10999 10969:10970 11001 11000 10970:10971 11002 11001 10971:10972 \ + 11003 11002 10972:10973 11004 11003 10973:10974 11005 11004 10976 10975 11006:11007 \ + 10975 10977 11008 11006 10977:10978 11009 11008 10978:10979 \ + 11010 11009 10979:10980 11011 11010 10980:10981 11012 11011 10981:10982 \ + 11013 11012 10982:10983 11014 11013 10983:10984 11015 11014 10984:10985 \ + 11016 11015 10985:10986 11017 11016 10986:10987 11018 11017 10987:10988 \ + 11019 11018 10988:10989 11020 11019 10989:10990 11021 11020 10990:10991 \ + 11022 11021 10991:10992 11023 11022 10992:10993 11024 11023 10993:10994 \ + 11025 11024 10994:10995 11026 11025 10995:10996 11027 11026 10996:10997 \ + 11028 11027 10997:10998 11029 11028 10998:10999 11030 11029 10999:11000 \ + 11031 11030 11000:11001 11032 11031 11001:11002 11033 11032 11002:11003 \ + 11034 11033 11003:11004 11035 11034 11004:11005 11036 11035 11007 11006 11037:11038 \ + 11006 11008 11039 11037 11008:11009 11040 11039 11009:11010 \ + 11041 11040 11010:11011 11042 11041 11011:11012 11043 11042 11012:11013 \ + 11044 11043 11013:11014 11045 11044 11014:11015 11046 11045 11015:11016 \ + 11047 11046 11016:11017 11048 11047 11017:11018 11049 11048 11018:11019 \ + 11050 11049 11019:11020 11051 11050 11020:11021 11052 11051 11021:11022 \ + 11053 11052 11022:11023 11054 11053 11023:11024 11055 11054 11024:11025 \ + 11056 11055 11025:11026 11057 11056 11026:11027 11058 11057 11027:11028 \ + 11059 11058 11028:11029 11060 11059 11029:11030 11061 11060 11030:11031 \ + 11062 11061 11031:11032 11063 11062 11032:11033 11064 11063 11033:11034 \ + 11065 11064 11034:11035 11066 11065 11035:11036 11067 11066 11038 11037 11068:11069 \ + 11037 11039 11070 11068 11039:11040 11071 11070 11040:11041 \ + 11072 11071 11041:11042 11073 11072 11042:11043 11074 11073 11043:11044 \ + 11075 11074 11044:11045 11076 11075 11045:11046 11077 11076 11046:11047 \ + 11078 11077 11047:11048 11079 11078 11048:11049 11080 11079 11049:11050 \ + 11081 11080 11050:11051 11082 11081 11051:11052 11083 11082 11052:11053 \ + 11084 11083 11053:11054 11085 11084 11054:11055 11086 11085 11055:11056 \ + 11087 11086 11056:11057 11088 11087 11057:11058 11089 11088 11058:11059 \ + 11090 11089 11059:11060 11091 11090 11060:11061 11092 11091 11061:11062 \ + 11093 11092 11062:11063 11094 11093 11063:11064 11095 11094 11064:11065 \ + 11096 11095 11065:11066 11097 11096 11066:11067 11098 11097 11069 11068 11099:11100 \ + 11068 11070 11101 11099 11070:11071 11102 11101 11071:11072 \ + 11103 11102 11072:11073 11104 11103 11073:11074 11105 11104 11074:11075 \ + 11106 11105 11075:11076 11107 11106 11076:11077 11108 11107 11077:11078 \ + 11109 11108 11078:11079 11110 11109 11079:11080 11111 11110 11080:11081 \ + 11112 11111 11081:11082 11113 11112 11082:11083 11114 11113 11083:11084 \ + 11115 11114 11084:11085 11116 11115 11085:11086 11117 11116 11086:11087 \ + 11118 11117 11087:11088 11119 11118 11088:11089 11120 11119 11089:11090 \ + 11121 11120 11090:11091 11122 11121 11091:11092 11123 11122 11092:11093 \ + 11124 11123 11093:11094 11125 11124 11094:11095 11126 11125 11095:11096 \ + 11127 11126 11096:11097 11128 11127 11097:11098 11129 11128 11100 11099 11130:11131 \ + 11099 11101 11132 11130 11101:11102 11133 11132 11102:11103 \ + 11134 11133 11103:11104 11135 11134 11104:11105 11136 11135 11105:11106 \ + 11137 11136 11106:11107 11138 11137 11107:11108 11139 11138 11108:11109 \ + 11140 11139 11109:11110 11141 11140 11110:11111 11142 11141 11111:11112 \ + 11143 11142 11112:11113 11144 11143 11113:11114 11145 11144 11114:11115 \ + 11146 11145 11115:11116 11147 11146 11116:11117 11148 11147 11117:11118 \ + 11149 11148 11118:11119 11150 11149 11119:11120 11151 11150 11120:11121 \ + 11152 11151 11121:11122 11153 11152 11122:11123 11154 11153 11123:11124 \ + 11155 11154 11124:11125 11156 11155 11125:11126 11157 11156 11126:11127 \ + 11158 11157 11127:11128 11159 11158 11128:11129 11160 11159 11131 11130 10077 10076 11130 11132 10080 10077 11132:11133 \ + 10082 10080 11133:11134 10084 10082 11134:11135 10086 10084 11135:11136 \ + 10088 10086 11136:11137 10090 10088 11137:11138 10092 10090 11138:11139 \ + 10094 10092 11139:11140 10096 10094 11140:11141 10098 10096 11141:11142 \ + 10100 10098 11142:11143 10102 10100 11143:11144 10104 10102 11144:11145 \ + 10106 10104 11145:11146 10108 10106 11146:11147 10110 10108 11147:11148 \ + 10112 10110 11148:11149 10114 10112 11149:11150 10116 10114 11150:11151 \ + 10118 10116 11151:11152 10120 10118 11152:11153 10122 10120 11153:11154 \ + 10124 10122 11154:11155 10126 10124 11155:11156 10128 10126 11156:11157 \ + 10130 10128 11157:11158 10132 10130 11158:11159 10134 10132 11159:11160 \ + 10136 10134 " ) +VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) +VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) +VCmd.SetStringValue( var5, r"PropertyValueUnit", r"bar" ) +ret=VCmd.ExecuteCommand( var5, r"UpdateParamForUnit" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) +VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) +VCmd.SetStringValue( var5, r"ActiveProperty", r"pressure" ) +VCmd.SetStringValue( var5, r"ActiveModelID", r"boundary_condition_parameters" ) +VCmd.SetStringValue( var5, r"PropertySValue", r" 5" ) +ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) +VCmd.SetStringValue( var4, r"BcName", r"Pressure_2" ) +VCmd.SetStringValue( var4, r"BCType", r"Normal Locking" ) +VCmd.SetStringValue( var4, r"BcName", r"Normal Locking_2" ) +ret=VCmd.ExecuteCommand( var4, r"FillBcDb" ) +VCmd.SetIntValue( var1, r"SelectContiguous", 1 ) +lst1_count,lst1 = VScn.List( " S 2041 2045 2049 2053 2057 2061 2065 2069 2073 2077 2081 2085 2089 2093 2097 2101 2105 2109 2113 2117 2121 2125 2129 2133 2137 2141 2145 2149 2153 2157 2161 2165 2169 2173 2177 2181 2185 2189 2193 2197 2201 2205 2209 2213 2217 2221 2225 2229 2233 2237 2241 2245 2249 2253 2257 2261 2265 2269 2273 2277 2281 2285 2289 2293 2297 2301 2305 2309 2313 2317 2321 2325 2329 2333 2337 2341 2345 2349 2353 2357 2361 2365 2369 2373 2377 2381 2385 2389 2393 2397 6001 6005 6009 6013 6017 6021 6025 6029 6033 6037 6041 6045 6049 6053 6057 6061 6065 6069 6073 6077 6081 6085 6089 6093 6097 6101 6105 6109 6113 6117 6121 6125 6129 6133 6137 6141 6145 6149 6153 6157 6161 6165 6169 6173 6177 6181 6185 6189 6193 6197 6201 6205 6209 6213 6217 6221 6225 6229 6233 6237 6241 6245 6249 6253 6257 6261 6265 6269 6273 6277 6281 6285 6289 6293 6297 6301 6305 6309 6313 6317 6321 6325 6329 6333 6337 6341 6345 6349 6353 6357 6361 6365 6369 6373 6377 6381 6385 6389 6393 6397 6401 6405 6409 6413 6417 6421 6425 6429 6433 6437 6441 6445 6449 6453 6457 6461 6465 6469 6473 6477 6481 6485 6489 6493 6497 6501 6505 6509 6513 6517 6521 6525 6529 6533 6537 6541 6545 6549 6553 6557 6561 6565 6569 6573 6577 6581 6585 6589 6593 6597 6601 6605 6609 6613 6617 6621 6625 6629 6633 6637 6641 6645 6649 6653 6657 6661 6665 6669 6673 6677 6681 6685 6689 6693 6697 6701 6705 6709 6713 6717 6721 6725 6729 6733 6737 6741 6745 6749 6753 6757 6761 6765 6769 6773 6777 6781 6785 6789 6793 6797 6801 6805 6809 6813 6817 6821 6825 6829 6833 6837 6841 6845 6849 6853 6857 6861 6865 6869 6873 6877 6881 6885 6889 6893 6897 6901 6905 6909 6913 6917 6921 6925 6929 6933 6937 6941 6945 6949 6953 6957 6961 6965 6969 6973 6977 6981 6985 6989 6993 6997 7001 7005 7009 7013 7017 7021 7025 7029 7033 7037 7041 7045 7049 7053 7057 7061 7065 7069 7073 7077 7081 7085 7089 7093 7097 7101 7105 7109 7113 7117 7121 7125 7129 7133 7137 7141 7145 7149 7153 7157 7161 7165 7169 7173 7177 7181 7185 7189 7193 7197 7201 7205 7209 7213 7217 7221 7225 7229 7233 7237 7241 7245 7249 7253 7257 7261 7265 7269 7273 7277 7281 7285 7289 7293 7297 7301 7305 7309 7313 7317 7321 7325 7329 7333 7337 7341 7345 7349 7353 7357 7361 7365 7369 7373 7377 7381 7385 7389 7393 7397 7401 7405 7409 7413 7417 7421 7425 7429 7433 7437 7441 7445 7449 7453 7457 7461 7465 7469 7473 7477 7481 7485 7489 7493 7497 7501 7505 7509 7513 7517 7521 7525 7529 7533 7537 7541 7545 7549 7553 7557 7561 7565 7569 7573 7577 7581 7585 7589 7593 7597 7601 7605 7609 7613 7617 7621 7625 7629 7633 7637 7641 7645 7649 7653 7657 7661 7665 7669 7673 7677 7681 7685 7689 7693 7697 7701 7705 7709 7713 7717 7721 7725 7729 7733 7737 7741 7745 7749 7753 7757 7761 7765 7769 7773 7777 7781 7785 7789 7793 7797 7801 7805 7809 7813 7817 7821 7825 7829 7833 7837 7841 7845 7849 7853 7857 7861 7865 7869 7873 7877 7881 7885 7889 7893 7897 7901 7905 7909 7913 7917 7921 7925 7929 7933 7937 7941 7945 7949 7953 7957 7961 7965 7969 7973 7977 7981 7985 7989 7993 7997 8001 8005 8009 8013 8017 8021 8025 8029 8033 8037 8041 8045 8049 8053 8057 8061 8065 8069 8073 8077 8081 8085 8089 8093 8097 8101 8105 8109 8113 8117 8121 8125 8129 8133 8137 8141 8145 8149 8153 8157 8161 8165 8169 8173 8177 8181 8185 8189 8193 8197 8201 8205 8209 8213 8217 8221 8225 8229 8233 8237 8241 8245 8249 8253 8257 8261 8265 8269 8273 8277 8281 8285 8289 8293 8297 8301 8305 8309 8313 8317 8321 8325 8329 8333 8337 8341 8345 8349 8353 8357 8361 8365 8369 8373 8377 8381 8385 8389 8393 8397 8401 8405 8409 8413 8417 8421 8425 8429 8433 8437 8441 8445 8449 8453 8457 8461 8465 8469 8473 8477 8481 8485 8489 8493 8497 8501 8505 8509 8513 8517 8521 8525 8529 8533 8537 8541 8545 8549 8553 8557 8561 8565 8569 8573 8577 8581 8585 8589 8593 8597 8601 8605 8609 8613 8617 8621 8625 8629 8633 8637 8641 8645 8649 8653 8657 8661 8665 8669 8673 8677 8681 8685 8689 8693 8697 8701 8705 8709 8713 8717 8721 8725 8729 8733 8737 8741 8745 8749 8753 8757 8761 8765 8769 8773 8777 8781 8785 8789 8793 8797 8801 8805 8809 8813 8817 8821 8825 8829 8833 8837 8841 8845 8849 8853 8857 8861 8865 8869 8873 8877 8881 8885 8889 8893 8897 8901 8905 8909 8913 8917 8921 8925 8929 8933 8937 8941 8945 8949 8953 8957 8961 8965 8969 8973 8977 8981 8985 8989 8993 8997 9001 9005 9009 9013 9017 9021 9025 9029 9033 9037 9041 9045 9049 9053 9057 9061 9065 9069 9073 9077 9081 9085 9089 9093 9097 9101 9105 9109 9113 9117 9121 9125 9129 9133 9137 9141 9145 9149 9153 9157 9161 9165 9169 9173 9177 9181 9185 9189 9193 9197 9201 9205 9209 9213 9217 9221 9225 9229 9233 9237 9241 9245 9249 9253 9257 9261 9265 9269 9273 9277 9281 9285 9289 9293 9297 9301 9305 9309 9313 9317 9321 9325 9329 9333 9337 9341 9345 9349 9353 9357 9361 9365 9369 9373 9377 9381 9385 9389 9393 9397 9401 9405 9409 9413 9417 9421 9425 9429 9433 9437 9441 9445 9449 9453 9457 9461 9465 9469 9473 9477 9481 9485 9489 9493 9497 9501 9505 9509 9513 9517 9521 9525 9529 9533 9537 9541 9545 9549 9553 9557 9561 9565 9569 9573 9577 9581 9585 9589 9593 9597 1921 1925 1929 1933 1937 1941 1945 1949 1953 1957 1961 1965 1969 1973 1977 1981 1985 1989 1993 1997 2001 2005 2009 2013 2017 2021 2025 2029 2033 2037 2401 2405 2409 2413 2417 2421 2425 2429 2433 2437 2441 2445 2449 2453 2457 2461 2465 2469 2473 2477 2481 2485 2489 2493 2497 2501 2505 2509 2513 2517 2521 2525 2529 2533 2537 2541 2545 2549 2553 2557 2561 2565 2569 2573 2577 2581 2585 2589 2593 2597 2601 2605 2609 2613 2617 2621 2625 2629 2633 2637 2641 2645 2649 2653 2657 2661 2665 2669 2673 2677 2681 2685 2689 2693 2697 2701 2705 2709 2713 2717 2721 2725 2729 2733 2737 2741 2745 2749 2753 2757 2761 2765 2769 2773 2777 2781 2785 2789 2793 2797 2801 2805 2809 2813 2817 2821 2825 2829 2833 2837 2841 2845 2849 2853 2857 2861 2865 2869 2873 2877 2881 2885 2889 2893 2897 2901 2905 2909 2913 2917 2921 2925 2929 2933 2937 2941 2945 2949 2953 2957 2961 2965 2969 2973 2977 2981 2985 2989 2993 2997 3001 3005 3009 3013 3017 3021 3025 3029 3033 3037 3041 3045 3049 3053 3057 3061 3065 3069 3073 3077 3081 3085 3089 3093 3097 3101 3105 3109 3113 3117 3121 3125 3129 3133 3137 3141 3145 3149 3153 3157 3161 3165 3169 3173 3177 3181 3185 3189 3193 3197 3201 3205 3209 3213 3217 3221 3225 3229 3233 3237 3241 3245 3249 3253 3257 3261 3265 3269 3273 3277 3281 3285 3289 3293 3297 3301 3305 3309 3313 3317 3321 3325 3329 3333 3337 3341 3345 3349 3353 3357 3361 3365 3369 3373 3377 3381 3385 3389 3393 3397 3401 3405 3409 3413 3417 3421 3425 3429 3433 3437 3441 3445 3449 3453 3457 3461 3465 3469 3473 3477 3481 3485 3489 3493 3497 3501 3505 3509 3513 3517 3521 3525 3529 3533 3537 3541 3545 3549 3553 3557 3561 3565 3569 3573 3577 3581 3585 3589 3593 3597 3601 3605 3609 3613 3617 3621 3625 3629 3633 3637 3641 3645 3649 3653 3657 3661 3665 3669 3673 3677 3681 3685 3689 3693 3697 3701 3705 3709 3713 3717 3721 3725 3729 3733 3737 3741 3745 3749 3753 3757 3761 3765 3769 3773 3777 3781 3785 3789 3793 3797 3801 3805 3809 3813 3817 3821 3825 3829 3833 3837 3841 3845 3849 3853 3857 3861 3865 3869 3873 3877 3881 3885 3889 3893 3897 3901 3905 3909 3913 3917 3921 3925 3929 3933 3937 3941 3945 3949 3953 3957 3961 3965 3969 3973 3977 3981 3985 3989 3993 3997 4001 4005 4009 4013 4017 4021 4025 4029 4033 4037 4041 4045 4049 4053 4057 4061 4065 4069 4073 4077 4081 4085 4089 4093 4097 4101 4105 4109 4113 4117 4121 4125 4129 4133 4137 4141 4145 4149 4153 4157 4161 4165 4169 4173 4177 4181 4185 4189 4193 4197 4201 4205 4209 4213 4217 4221 4225 4229 4233 4237 4241 4245 4249 4253 4257 4261 4265 4269 4273 4277 4281 4285 4289 4293 4297 4301 4305 4309 4313 4317 4321 4325 4329 4333 4337 4341 4345 4349 4353 4357 4361 4365 4369 4373 4377 4381 4385 4389 4393 4397 4401 4405 4409 4413 4417 4421 4425 4429 4433 4437 4441 4445 4449 4453 4457 4461 4465 4469 4473 4477 4481 4485 4489 4493 4497 4501 4505 4509 4513 4517 4521 4525 4529 4533 4537 4541 4545 4549 4553 4557 4561 4565 4569 4573 4577 4581 4585 4589 4593 4597 4601 4605 4609 4613 4617 4621 4625 4629 4633 4637 4641 4645 4649 4653 4657 4661 4665 4669 4673 4677 4681 4685 4689 4693 4697 4701 4705 4709 4713 4717 4721 4725 4729 4733 4737 4741 4745 4749 4753 4757 4761 4765 4769 4773 4777 4781 4785 4789 4793 4797 4801 4805 4809 4813 4817 4821 4825 4829 4833 4837 4841 4845 4849 4853 4857 4861 4865 4869 4873 4877 4881 4885 4889 4893 4897 4901 4905 4909 4913 4917 4921 4925 4929 4933 4937 4941 4945 4949 4953 4957 4961 4965 4969 4973 4977 4981 4985 4989 4993 4997 5001 5005 5009 5013 5017 5021 5025 5029 5033 5037 5041 5045 5049 5053 5057 5061 5065 5069 5073 5077 5081 5085 5089 5093 5097 5101 5105 5109 5113 5117 5121 5125 5129 5133 5137 5141 5145 5149 5153 5157 5161 5165 5169 5173 5177 5181 5185 5189 5193 5197 5201 5205 5209 5213 5217 5221 5225 5229 5233 5237 5241 5245 5249 5253 5257 5261 5265 5269 5273 5277 5281 5285 5289 5293 5297 5301 5305 5309 5313 5317 5321 5325 5329 5333 5337 5341 5345 5349 5353 5357 5361 5365 5369 5373 5377 5381 5385 5389 5393 5397 5401 5405 5409 5413 5417 5421 5425 5429 5433 5437 5441 5445 5449 5453 5457 5461 5465 5469 5473 5477 5481 5485 5489 5493 5497 5501 5505 5509 5513 5517 5521 5525 5529 5533 5537 5541 5545 5549 5553 5557 5561 5565 5569 5573 5577 5581 5585 5589 5593 5597 5601 5605 5609 5613 5617 5621 5625 5629 5633 5637 5641 5645 5649 5653 5657 5661 5665 5669 5673 5677 5681 5685 5689 5693 5697 5701 5705 5709 5713 5717 5721 5725 5729 5733 5737 5741 5745 5749 5753 5757 5761 5765 5769 5773 5777 5781 5785 5789 5793 5797 5801 5805 5809 5813 5817 5821 5825 5829 5833 5837 5841 5845 5849 5853 5857 5861 5865 5869 5873 5877 5881 5885 5889 5893 5897 5901 5905 5909 5913 5917 5921 5925 5929 5933 5937 5941 5945 5949 5953 5957 5961 5965 5969 5973 5977 5981 5985 5989 5993 5997 | \ + N 2019 2079 2078 2018 2018 2078 2080 2021 2021 2080:2081 \ + 2023 2023 2081:2082 2025 2025 2082:2083 2027 2027 2083:2084 \ + 2029 2029 2084:2085 2031 2031 2085:2086 2033 2033 2086:2087 \ + 2035 2035 2087:2088 2037 2037 2088:2089 2039 2039 2089:2090 \ + 2041 2041 2090:2091 2043 2043 2091:2092 2045 2045 2092:2093 \ + 2047 2047 2093:2094 2049 2049 2094:2095 2051 2051 2095:2096 \ + 2053 2053 2096:2097 2055 2055 2097:2098 2057 2057 2098:2099 \ + 2059 2059 2099:2100 2061 2061 2100:2101 2063 2063 2101:2102 \ + 2065 2065 2102:2103 2067 2067 2103:2104 2069 2069 2104:2105 \ + 2071 2071 2105:2106 2073 2073 2106:2107 2075 2075 2107:2108 \ + 2077 2079 2110 2109 2078 2078 2109 2111 2080 2080 2111:2112 \ + 2081 2081 2112:2113 2082 2082 2113:2114 2083 2083 2114:2115 \ + 2084 2084 2115:2116 2085 2085 2116:2117 2086 2086 2117:2118 \ + 2087 2087 2118:2119 2088 2088 2119:2120 2089 2089 2120:2121 \ + 2090 2090 2121:2122 2091 2091 2122:2123 2092 2092 2123:2124 \ + 2093 2093 2124:2125 2094 2094 2125:2126 2095 2095 2126:2127 \ + 2096 2096 2127:2128 2097 2097 2128:2129 2098 2098 2129:2130 \ + 2099 2099 2130:2131 2100 2100 2131:2132 2101 2101 2132:2133 \ + 2102 2102 2133:2134 2103 2103 2134:2135 2104 2104 2135:2136 \ + 2105 2105 2136:2137 2106 2106 2137:2138 2107 2107 2138:2139 \ + 2108 2110 2141 2140 2109 2109 2140 2142 2111 2111 2142:2143 \ + 2112 2112 2143:2144 2113 2113 2144:2145 2114 2114 2145:2146 \ + 2115 2115 2146:2147 2116 2116 2147:2148 2117 2117 2148:2149 \ + 2118 2118 2149:2150 2119 2119 2150:2151 2120 2120 2151:2152 \ + 2121 2121 2152:2153 2122 2122 2153:2154 2123 2123 2154:2155 \ + 2124 2124 2155:2156 2125 2125 2156:2157 2126 2126 2157:2158 \ + 2127 2127 2158:2159 2128 2128 2159:2160 2129 2129 2160:2161 \ + 2130 2130 2161:2162 2131 2131 2162:2163 2132 2132 2163:2164 \ + 2133 2133 2164:2165 2134 2134 2165:2166 2135 2135 2166:2167 \ + 2136 2136 2167:2168 2137 2137 2168:2169 2138 2138 2169:2170 \ + 2139 2141 3102 3101 2140 2140 3101 3103 2142 2142 3103:3104 \ + 2143 2143 3104:3105 2144 2144 3105:3106 2145 2145 3106:3107 \ + 2146 2146 3107:3108 2147 2147 3108:3109 2148 2148 3109:3110 \ + 2149 2149 3110:3111 2150 2150 3111:3112 2151 2151 3112:3113 \ + 2152 2152 3113:3114 2153 2153 3114:3115 2154 2154 3115:3116 \ + 2155 2155 3116:3117 2156 2156 3117:3118 2157 2157 3118:3119 \ + 2158 2158 3119:3120 2159 2159 3120:3121 2160 2160 3121:3122 \ + 2161 2161 3122:3123 2162 2162 3123:3124 2163 2163 3124:3125 \ + 2164 2164 3125:3126 2165 2165 3126:3127 2166 2166 3127:3128 \ + 2167 2167 3128:3129 2168 2168 3129:3130 2169 2169 3130:3131 \ + 2170 3102 3133 3132 3101 3101 3132 3134 3103 3103 3134:3135 \ + 3104 3104 3135:3136 3105 3105 3136:3137 3106 3106 3137:3138 \ + 3107 3107 3138:3139 3108 3108 3139:3140 3109 3109 3140:3141 \ + 3110 3110 3141:3142 3111 3111 3142:3143 3112 3112 3143:3144 \ + 3113 3113 3144:3145 3114 3114 3145:3146 3115 3115 3146:3147 \ + 3116 3116 3147:3148 3117 3117 3148:3149 3118 3118 3149:3150 \ + 3119 3119 3150:3151 3120 3120 3151:3152 3121 3121 3152:3153 \ + 3122 3122 3153:3154 3123 3123 3154:3155 3124 3124 3155:3156 \ + 3125 3125 3156:3157 3126 3126 3157:3158 3127 3127 3158:3159 \ + 3128 3128 3159:3160 3129 3129 3160:3161 3130 3130 3161:3162 \ + 3131 3133 3164 3163 3132 3132 3163 3165 3134 3134 3165:3166 \ + 3135 3135 3166:3167 3136 3136 3167:3168 3137 3137 3168:3169 \ + 3138 3138 3169:3170 3139 3139 3170:3171 3140 3140 3171:3172 \ + 3141 3141 3172:3173 3142 3142 3173:3174 3143 3143 3174:3175 \ + 3144 3144 3175:3176 3145 3145 3176:3177 3146 3146 3177:3178 \ + 3147 3147 3178:3179 3148 3148 3179:3180 3149 3149 3180:3181 \ + 3150 3150 3181:3182 3151 3151 3182:3183 3152 3152 3183:3184 \ + 3153 3153 3184:3185 3154 3154 3185:3186 3155 3155 3186:3187 \ + 3156 3156 3187:3188 3157 3157 3188:3189 3158 3158 3189:3190 \ + 3159 3159 3190:3191 3160 3160 3191:3192 3161 3161 3192:3193 \ + 3162 3164 3195 3194 3163 3163 3194 3196 3165 3165 3196:3197 \ + 3166 3166 3197:3198 3167 3167 3198:3199 3168 3168 3199:3200 \ + 3169 3169 3200:3201 3170 3170 3201:3202 3171 3171 3202:3203 \ + 3172 3172 3203:3204 3173 3173 3204:3205 3174 3174 3205:3206 \ + 3175 3175 3206:3207 3176 3176 3207:3208 3177 3177 3208:3209 \ + 3178 3178 3209:3210 3179 3179 3210:3211 3180 3180 3211:3212 \ + 3181 3181 3212:3213 3182 3182 3213:3214 3183 3183 3214:3215 \ + 3184 3184 3215:3216 3185 3185 3216:3217 3186 3186 3217:3218 \ + 3187 3187 3218:3219 3188 3188 3219:3220 3189 3189 3220:3221 \ + 3190 3190 3221:3222 3191 3191 3222:3223 3192 3192 3223:3224 \ + 3193 3195 3226 3225 3194 3194 3225 3227 3196 3196 3227:3228 \ + 3197 3197 3228:3229 3198 3198 3229:3230 3199 3199 3230:3231 \ + 3200 3200 3231:3232 3201 3201 3232:3233 3202 3202 3233:3234 \ + 3203 3203 3234:3235 3204 3204 3235:3236 3205 3205 3236:3237 \ + 3206 3206 3237:3238 3207 3207 3238:3239 3208 3208 3239:3240 \ + 3209 3209 3240:3241 3210 3210 3241:3242 3211 3211 3242:3243 \ + 3212 3212 3243:3244 3213 3213 3244:3245 3214 3214 3245:3246 \ + 3215 3215 3246:3247 3216 3216 3247:3248 3217 3217 3248:3249 \ + 3218 3218 3249:3250 3219 3219 3250:3251 3220 3220 3251:3252 \ + 3221 3221 3252:3253 3222 3222 3253:3254 3223 3223 3254:3255 \ + 3224 3226 3257 3256 3225 3225 3256 3258 3227 3227 3258:3259 \ + 3228 3228 3259:3260 3229 3229 3260:3261 3230 3230 3261:3262 \ + 3231 3231 3262:3263 3232 3232 3263:3264 3233 3233 3264:3265 \ + 3234 3234 3265:3266 3235 3235 3266:3267 3236 3236 3267:3268 \ + 3237 3237 3268:3269 3238 3238 3269:3270 3239 3239 3270:3271 \ + 3240 3240 3271:3272 3241 3241 3272:3273 3242 3242 3273:3274 \ + 3243 3243 3274:3275 3244 3244 3275:3276 3245 3245 3276:3277 \ + 3246 3246 3277:3278 3247 3247 3278:3279 3248 3248 3279:3280 \ + 3249 3249 3280:3281 3250 3250 3281:3282 3251 3251 3282:3283 \ + 3252 3252 3283:3284 3253 3253 3284:3285 3254 3254 3285:3286 \ + 3255 3257 3288 3287 3256 3256 3287 3289 3258 3258 3289:3290 \ + 3259 3259 3290:3291 3260 3260 3291:3292 3261 3261 3292:3293 \ + 3262 3262 3293:3294 3263 3263 3294:3295 3264 3264 3295:3296 \ + 3265 3265 3296:3297 3266 3266 3297:3298 3267 3267 3298:3299 \ + 3268 3268 3299:3300 3269 3269 3300:3301 3270 3270 3301:3302 \ + 3271 3271 3302:3303 3272 3272 3303:3304 3273 3273 3304:3305 \ + 3274 3274 3305:3306 3275 3275 3306:3307 3276 3276 3307:3308 \ + 3277 3277 3308:3309 3278 3278 3309:3310 3279 3279 3310:3311 \ + 3280 3280 3311:3312 3281 3281 3312:3313 3282 3282 3313:3314 \ + 3283 3283 3314:3315 3284 3284 3315:3316 3285 3285 3316:3317 \ + 3286 3288 3319 3318 3287 3287 3318 3320 3289 3289 3320:3321 \ + 3290 3290 3321:3322 3291 3291 3322:3323 3292 3292 3323:3324 \ + 3293 3293 3324:3325 3294 3294 3325:3326 3295 3295 3326:3327 \ + 3296 3296 3327:3328 3297 3297 3328:3329 3298 3298 3329:3330 \ + 3299 3299 3330:3331 3300 3300 3331:3332 3301 3301 3332:3333 \ + 3302 3302 3333:3334 3303 3303 3334:3335 3304 3304 3335:3336 \ + 3305 3305 3336:3337 3306 3306 3337:3338 3307 3307 3338:3339 \ + 3308 3308 3339:3340 3309 3309 3340:3341 3310 3310 3341:3342 \ + 3311 3311 3342:3343 3312 3312 3343:3344 3313 3313 3344:3345 \ + 3314 3314 3345:3346 3315 3315 3346:3347 3316 3316 3347:3348 \ + 3317 3319 3350 3349 3318 3318 3349 3351 3320 3320 3351:3352 \ + 3321 3321 3352:3353 3322 3322 3353:3354 3323 3323 3354:3355 \ + 3324 3324 3355:3356 3325 3325 3356:3357 3326 3326 3357:3358 \ + 3327 3327 3358:3359 3328 3328 3359:3360 3329 3329 3360:3361 \ + 3330 3330 3361:3362 3331 3331 3362:3363 3332 3332 3363:3364 \ + 3333 3333 3364:3365 3334 3334 3365:3366 3335 3335 3366:3367 \ + 3336 3336 3367:3368 3337 3337 3368:3369 3338 3338 3369:3370 \ + 3339 3339 3370:3371 3340 3340 3371:3372 3341 3341 3372:3373 \ + 3342 3342 3373:3374 3343 3343 3374:3375 3344 3344 3375:3376 \ + 3345 3345 3376:3377 3346 3346 3377:3378 3347 3347 3378:3379 \ + 3348 3350 3381 3380 3349 3349 3380 3382 3351 3351 3382:3383 \ + 3352 3352 3383:3384 3353 3353 3384:3385 3354 3354 3385:3386 \ + 3355 3355 3386:3387 3356 3356 3387:3388 3357 3357 3388:3389 \ + 3358 3358 3389:3390 3359 3359 3390:3391 3360 3360 3391:3392 \ + 3361 3361 3392:3393 3362 3362 3393:3394 3363 3363 3394:3395 \ + 3364 3364 3395:3396 3365 3365 3396:3397 3366 3366 3397:3398 \ + 3367 3367 3398:3399 3368 3368 3399:3400 3369 3369 3400:3401 \ + 3370 3370 3401:3402 3371 3371 3402:3403 3372 3372 3403:3404 \ + 3373 3373 3404:3405 3374 3374 3405:3406 3375 3375 3406:3407 \ + 3376 3376 3407:3408 3377 3377 3408:3409 3378 3378 3409:3410 \ + 3379 3381 3412 3411 3380 3380 3411 3413 3382 3382 3413:3414 \ + 3383 3383 3414:3415 3384 3384 3415:3416 3385 3385 3416:3417 \ + 3386 3386 3417:3418 3387 3387 3418:3419 3388 3388 3419:3420 \ + 3389 3389 3420:3421 3390 3390 3421:3422 3391 3391 3422:3423 \ + 3392 3392 3423:3424 3393 3393 3424:3425 3394 3394 3425:3426 \ + 3395 3395 3426:3427 3396 3396 3427:3428 3397 3397 3428:3429 \ + 3398 3398 3429:3430 3399 3399 3430:3431 3400 3400 3431:3432 \ + 3401 3401 3432:3433 3402 3402 3433:3434 3403 3403 3434:3435 \ + 3404 3404 3435:3436 3405 3405 3436:3437 3406 3406 3437:3438 \ + 3407 3407 3438:3439 3408 3408 3439:3440 3409 3409 3440:3441 \ + 3410 3412 3443 3442 3411 3411 3442 3444 3413 3413 3444:3445 \ + 3414 3414 3445:3446 3415 3415 3446:3447 3416 3416 3447:3448 \ + 3417 3417 3448:3449 3418 3418 3449:3450 3419 3419 3450:3451 \ + 3420 3420 3451:3452 3421 3421 3452:3453 3422 3422 3453:3454 \ + 3423 3423 3454:3455 3424 3424 3455:3456 3425 3425 3456:3457 \ + 3426 3426 3457:3458 3427 3427 3458:3459 3428 3428 3459:3460 \ + 3429 3429 3460:3461 3430 3430 3461:3462 3431 3431 3462:3463 \ + 3432 3432 3463:3464 3433 3433 3464:3465 3434 3434 3465:3466 \ + 3435 3435 3466:3467 3436 3436 3467:3468 3437 3437 3468:3469 \ + 3438 3438 3469:3470 3439 3439 3470:3471 3440 3440 3471:3472 \ + 3441 3443 3474 3473 3442 3442 3473 3475 3444 3444 3475:3476 \ + 3445 3445 3476:3477 3446 3446 3477:3478 3447 3447 3478:3479 \ + 3448 3448 3479:3480 3449 3449 3480:3481 3450 3450 3481:3482 \ + 3451 3451 3482:3483 3452 3452 3483:3484 3453 3453 3484:3485 \ + 3454 3454 3485:3486 3455 3455 3486:3487 3456 3456 3487:3488 \ + 3457 3457 3488:3489 3458 3458 3489:3490 3459 3459 3490:3491 \ + 3460 3460 3491:3492 3461 3461 3492:3493 3462 3462 3493:3494 \ + 3463 3463 3494:3495 3464 3464 3495:3496 3465 3465 3496:3497 \ + 3466 3466 3497:3498 3467 3467 3498:3499 3468 3468 3499:3500 \ + 3469 3469 3500:3501 3470 3470 3501:3502 3471 3471 3502:3503 \ + 3472 3474 3505 3504 3473 3473 3504 3506 3475 3475 3506:3507 \ + 3476 3476 3507:3508 3477 3477 3508:3509 3478 3478 3509:3510 \ + 3479 3479 3510:3511 3480 3480 3511:3512 3481 3481 3512:3513 \ + 3482 3482 3513:3514 3483 3483 3514:3515 3484 3484 3515:3516 \ + 3485 3485 3516:3517 3486 3486 3517:3518 3487 3487 3518:3519 \ + 3488 3488 3519:3520 3489 3489 3520:3521 3490 3490 3521:3522 \ + 3491 3491 3522:3523 3492 3492 3523:3524 3493 3493 3524:3525 \ + 3494 3494 3525:3526 3495 3495 3526:3527 3496 3496 3527:3528 \ + 3497 3497 3528:3529 3498 3498 3529:3530 3499 3499 3530:3531 \ + 3500 3500 3531:3532 3501 3501 3532:3533 3502 3502 3533:3534 \ + 3503 3505 3536 3535 3504 3504 3535 3537 3506 3506 3537:3538 \ + 3507 3507 3538:3539 3508 3508 3539:3540 3509 3509 3540:3541 \ + 3510 3510 3541:3542 3511 3511 3542:3543 3512 3512 3543:3544 \ + 3513 3513 3544:3545 3514 3514 3545:3546 3515 3515 3546:3547 \ + 3516 3516 3547:3548 3517 3517 3548:3549 3518 3518 3549:3550 \ + 3519 3519 3550:3551 3520 3520 3551:3552 3521 3521 3552:3553 \ + 3522 3522 3553:3554 3523 3523 3554:3555 3524 3524 3555:3556 \ + 3525 3525 3556:3557 3526 3526 3557:3558 3527 3527 3558:3559 \ + 3528 3528 3559:3560 3529 3529 3560:3561 3530 3530 3561:3562 \ + 3531 3531 3562:3563 3532 3532 3563:3564 3533 3533 3564:3565 \ + 3534 3536 3567 3566 3535 3535 3566 3568 3537 3537 3568:3569 \ + 3538 3538 3569:3570 3539 3539 3570:3571 3540 3540 3571:3572 \ + 3541 3541 3572:3573 3542 3542 3573:3574 3543 3543 3574:3575 \ + 3544 3544 3575:3576 3545 3545 3576:3577 3546 3546 3577:3578 \ + 3547 3547 3578:3579 3548 3548 3579:3580 3549 3549 3580:3581 \ + 3550 3550 3581:3582 3551 3551 3582:3583 3552 3552 3583:3584 \ + 3553 3553 3584:3585 3554 3554 3585:3586 3555 3555 3586:3587 \ + 3556 3556 3587:3588 3557 3557 3588:3589 3558 3558 3589:3590 \ + 3559 3559 3590:3591 3560 3560 3591:3592 3561 3561 3592:3593 \ + 3562 3562 3593:3594 3563 3563 3594:3595 3564 3564 3595:3596 \ + 3565 3567 3598 3597 3566 3566 3597 3599 3568 3568 3599:3600 \ + 3569 3569 3600:3601 3570 3570 3601:3602 3571 3571 3602:3603 \ + 3572 3572 3603:3604 3573 3573 3604:3605 3574 3574 3605:3606 \ + 3575 3575 3606:3607 3576 3576 3607:3608 3577 3577 3608:3609 \ + 3578 3578 3609:3610 3579 3579 3610:3611 3580 3580 3611:3612 \ + 3581 3581 3612:3613 3582 3582 3613:3614 3583 3583 3614:3615 \ + 3584 3584 3615:3616 3585 3585 3616:3617 3586 3586 3617:3618 \ + 3587 3587 3618:3619 3588 3588 3619:3620 3589 3589 3620:3621 \ + 3590 3590 3621:3622 3591 3591 3622:3623 3592 3592 3623:3624 \ + 3593 3593 3624:3625 3594 3594 3625:3626 3595 3595 3626:3627 \ + 3596 3598 3629 3628 3597 3597 3628 3630 3599 3599 3630:3631 \ + 3600 3600 3631:3632 3601 3601 3632:3633 3602 3602 3633:3634 \ + 3603 3603 3634:3635 3604 3604 3635:3636 3605 3605 3636:3637 \ + 3606 3606 3637:3638 3607 3607 3638:3639 3608 3608 3639:3640 \ + 3609 3609 3640:3641 3610 3610 3641:3642 3611 3611 3642:3643 \ + 3612 3612 3643:3644 3613 3613 3644:3645 3614 3614 3645:3646 \ + 3615 3615 3646:3647 3616 3616 3647:3648 3617 3617 3648:3649 \ + 3618 3618 3649:3650 3619 3619 3650:3651 3620 3620 3651:3652 \ + 3621 3621 3652:3653 3622 3622 3653:3654 3623 3623 3654:3655 \ + 3624 3624 3655:3656 3625 3625 3656:3657 3626 3626 3657:3658 \ + 3627 3629 3660 3659 3628 3628 3659 3661 3630 3630 3661:3662 \ + 3631 3631 3662:3663 3632 3632 3663:3664 3633 3633 3664:3665 \ + 3634 3634 3665:3666 3635 3635 3666:3667 3636 3636 3667:3668 \ + 3637 3637 3668:3669 3638 3638 3669:3670 3639 3639 3670:3671 \ + 3640 3640 3671:3672 3641 3641 3672:3673 3642 3642 3673:3674 \ + 3643 3643 3674:3675 3644 3644 3675:3676 3645 3645 3676:3677 \ + 3646 3646 3677:3678 3647 3647 3678:3679 3648 3648 3679:3680 \ + 3649 3649 3680:3681 3650 3650 3681:3682 3651 3651 3682:3683 \ + 3652 3652 3683:3684 3653 3653 3684:3685 3654 3654 3685:3686 \ + 3655 3655 3686:3687 3656 3656 3687:3688 3657 3657 3688:3689 \ + 3658 3660 3691 3690 3659 3659 3690 3692 3661 3661 3692:3693 \ + 3662 3662 3693:3694 3663 3663 3694:3695 3664 3664 3695:3696 \ + 3665 3665 3696:3697 3666 3666 3697:3698 3667 3667 3698:3699 \ + 3668 3668 3699:3700 3669 3669 3700:3701 3670 3670 3701:3702 \ + 3671 3671 3702:3703 3672 3672 3703:3704 3673 3673 3704:3705 \ + 3674 3674 3705:3706 3675 3675 3706:3707 3676 3676 3707:3708 \ + 3677 3677 3708:3709 3678 3678 3709:3710 3679 3679 3710:3711 \ + 3680 3680 3711:3712 3681 3681 3712:3713 3682 3682 3713:3714 \ + 3683 3683 3714:3715 3684 3684 3715:3716 3685 3685 3716:3717 \ + 3686 3686 3717:3718 3687 3687 3718:3719 3688 3688 3719:3720 \ + 3689 3691 3722 3721 3690 3690 3721 3723 3692 3692 3723:3724 \ + 3693 3693 3724:3725 3694 3694 3725:3726 3695 3695 3726:3727 \ + 3696 3696 3727:3728 3697 3697 3728:3729 3698 3698 3729:3730 \ + 3699 3699 3730:3731 3700 3700 3731:3732 3701 3701 3732:3733 \ + 3702 3702 3733:3734 3703 3703 3734:3735 3704 3704 3735:3736 \ + 3705 3705 3736:3737 3706 3706 3737:3738 3707 3707 3738:3739 \ + 3708 3708 3739:3740 3709 3709 3740:3741 3710 3710 3741:3742 \ + 3711 3711 3742:3743 3712 3712 3743:3744 3713 3713 3744:3745 \ + 3714 3714 3745:3746 3715 3715 3746:3747 3716 3716 3747:3748 \ + 3717 3717 3748:3749 3718 3718 3749:3750 3719 3719 3750:3751 \ + 3720 3722 3753 3752 3721 3721 3752 3754 3723 3723 3754:3755 \ + 3724 3724 3755:3756 3725 3725 3756:3757 3726 3726 3757:3758 \ + 3727 3727 3758:3759 3728 3728 3759:3760 3729 3729 3760:3761 \ + 3730 3730 3761:3762 3731 3731 3762:3763 3732 3732 3763:3764 \ + 3733 3733 3764:3765 3734 3734 3765:3766 3735 3735 3766:3767 \ + 3736 3736 3767:3768 3737 3737 3768:3769 3738 3738 3769:3770 \ + 3739 3739 3770:3771 3740 3740 3771:3772 3741 3741 3772:3773 \ + 3742 3742 3773:3774 3743 3743 3774:3775 3744 3744 3775:3776 \ + 3745 3745 3776:3777 3746 3746 3777:3778 3747 3747 3778:3779 \ + 3748 3748 3779:3780 3749 3749 3780:3781 3750 3750 3781:3782 \ + 3751 3753 3784 3783 3752 3752 3783 3785 3754 3754 3785:3786 \ + 3755 3755 3786:3787 3756 3756 3787:3788 3757 3757 3788:3789 \ + 3758 3758 3789:3790 3759 3759 3790:3791 3760 3760 3791:3792 \ + 3761 3761 3792:3793 3762 3762 3793:3794 3763 3763 3794:3795 \ + 3764 3764 3795:3796 3765 3765 3796:3797 3766 3766 3797:3798 \ + 3767 3767 3798:3799 3768 3768 3799:3800 3769 3769 3800:3801 \ + 3770 3770 3801:3802 3771 3771 3802:3803 3772 3772 3803:3804 \ + 3773 3773 3804:3805 3774 3774 3805:3806 3775 3775 3806:3807 \ + 3776 3776 3807:3808 3777 3777 3808:3809 3778 3778 3809:3810 \ + 3779 3779 3810:3811 3780 3780 3811:3812 3781 3781 3812:3813 \ + 3782 3784 3815 3814 3783 3783 3814 3816 3785 3785 3816:3817 \ + 3786 3786 3817:3818 3787 3787 3818:3819 3788 3788 3819:3820 \ + 3789 3789 3820:3821 3790 3790 3821:3822 3791 3791 3822:3823 \ + 3792 3792 3823:3824 3793 3793 3824:3825 3794 3794 3825:3826 \ + 3795 3795 3826:3827 3796 3796 3827:3828 3797 3797 3828:3829 \ + 3798 3798 3829:3830 3799 3799 3830:3831 3800 3800 3831:3832 \ + 3801 3801 3832:3833 3802 3802 3833:3834 3803 3803 3834:3835 \ + 3804 3804 3835:3836 3805 3805 3836:3837 3806 3806 3837:3838 \ + 3807 3807 3838:3839 3808 3808 3839:3840 3809 3809 3840:3841 \ + 3810 3810 3841:3842 3811 3811 3842:3843 3812 3812 3843:3844 \ + 3813 3815 3846 3845 3814 3814 3845 3847 3816 3816 3847:3848 \ + 3817 3817 3848:3849 3818 3818 3849:3850 3819 3819 3850:3851 \ + 3820 3820 3851:3852 3821 3821 3852:3853 3822 3822 3853:3854 \ + 3823 3823 3854:3855 3824 3824 3855:3856 3825 3825 3856:3857 \ + 3826 3826 3857:3858 3827 3827 3858:3859 3828 3828 3859:3860 \ + 3829 3829 3860:3861 3830 3830 3861:3862 3831 3831 3862:3863 \ + 3832 3832 3863:3864 3833 3833 3864:3865 3834 3834 3865:3866 \ + 3835 3835 3866:3867 3836 3836 3867:3868 3837 3837 3868:3869 \ + 3838 3838 3869:3870 3839 3839 3870:3871 3840 3840 3871:3872 \ + 3841 3841 3872:3873 3842 3842 3873:3874 3843 3843 3874:3875 \ + 3844 3846 3877 3876 3845 3845 3876 3878 3847 3847 3878:3879 \ + 3848 3848 3879:3880 3849 3849 3880:3881 3850 3850 3881:3882 \ + 3851 3851 3882:3883 3852 3852 3883:3884 3853 3853 3884:3885 \ + 3854 3854 3885:3886 3855 3855 3886:3887 3856 3856 3887:3888 \ + 3857 3857 3888:3889 3858 3858 3889:3890 3859 3859 3890:3891 \ + 3860 3860 3891:3892 3861 3861 3892:3893 3862 3862 3893:3894 \ + 3863 3863 3894:3895 3864 3864 3895:3896 3865 3865 3896:3897 \ + 3866 3866 3897:3898 3867 3867 3898:3899 3868 3868 3899:3900 \ + 3869 3869 3900:3901 3870 3870 3901:3902 3871 3871 3902:3903 \ + 3872 3872 3903:3904 3873 3873 3904:3905 3874 3874 3905:3906 \ + 3875 3877 3908 3907 3876 3876 3907 3909 3878 3878 3909:3910 \ + 3879 3879 3910:3911 3880 3880 3911:3912 3881 3881 3912:3913 \ + 3882 3882 3913:3914 3883 3883 3914:3915 3884 3884 3915:3916 \ + 3885 3885 3916:3917 3886 3886 3917:3918 3887 3887 3918:3919 \ + 3888 3888 3919:3920 3889 3889 3920:3921 3890 3890 3921:3922 \ + 3891 3891 3922:3923 3892 3892 3923:3924 3893 3893 3924:3925 \ + 3894 3894 3925:3926 3895 3895 3926:3927 3896 3896 3927:3928 \ + 3897 3897 3928:3929 3898 3898 3929:3930 3899 3899 3930:3931 \ + 3900 3900 3931:3932 3901 3901 3932:3933 3902 3902 3933:3934 \ + 3903 3903 3934:3935 3904 3904 3935:3936 3905 3905 3936:3937 \ + 3906 3908 3939 3938 3907 3907 3938 3940 3909 3909 3940:3941 \ + 3910 3910 3941:3942 3911 3911 3942:3943 3912 3912 3943:3944 \ + 3913 3913 3944:3945 3914 3914 3945:3946 3915 3915 3946:3947 \ + 3916 3916 3947:3948 3917 3917 3948:3949 3918 3918 3949:3950 \ + 3919 3919 3950:3951 3920 3920 3951:3952 3921 3921 3952:3953 \ + 3922 3922 3953:3954 3923 3923 3954:3955 3924 3924 3955:3956 \ + 3925 3925 3956:3957 3926 3926 3957:3958 3927 3927 3958:3959 \ + 3928 3928 3959:3960 3929 3929 3960:3961 3930 3930 3961:3962 \ + 3931 3931 3962:3963 3932 3932 3963:3964 3933 3933 3964:3965 \ + 3934 3934 3965:3966 3935 3935 3966:3967 3936 3936 3967:3968 \ + 3937 3939 3970 3969 3938 3938 3969 3971 3940 3940 3971:3972 \ + 3941 3941 3972:3973 3942 3942 3973:3974 3943 3943 3974:3975 \ + 3944 3944 3975:3976 3945 3945 3976:3977 3946 3946 3977:3978 \ + 3947 3947 3978:3979 3948 3948 3979:3980 3949 3949 3980:3981 \ + 3950 3950 3981:3982 3951 3951 3982:3983 3952 3952 3983:3984 \ + 3953 3953 3984:3985 3954 3954 3985:3986 3955 3955 3986:3987 \ + 3956 3956 3987:3988 3957 3957 3988:3989 3958 3958 3989:3990 \ + 3959 3959 3990:3991 3960 3960 3991:3992 3961 3961 3992:3993 \ + 3962 3962 3993:3994 3963 3963 3994:3995 3964 3964 3995:3996 \ + 3965 3965 3996:3997 3966 3966 3997:3998 3967 3967 3998:3999 \ + 3968 3970 4001 4000 3969 3969 4000 4002 3971 3971 4002:4003 \ + 3972 3972 4003:4004 3973 3973 4004:4005 3974 3974 4005:4006 \ + 3975 3975 4006:4007 3976 3976 4007:4008 3977 3977 4008:4009 \ + 3978 3978 4009:4010 3979 3979 4010:4011 3980 3980 4011:4012 \ + 3981 3981 4012:4013 3982 3982 4013:4014 3983 3983 4014:4015 \ + 3984 3984 4015:4016 3985 3985 4016:4017 3986 3986 4017:4018 \ + 3987 3987 4018:4019 3988 3988 4019:4020 3989 3989 4020:4021 \ + 3990 3990 4021:4022 3991 3991 4022:4023 3992 3992 4023:4024 \ + 3993 3993 4024:4025 3994 3994 4025:4026 3995 3995 4026:4027 \ + 3996 3996 4027:4028 3997 3997 4028:4029 3998 3998 4029:4030 \ + 3999 2016 2019 2018 2017 2017:2018 2021 2020 2020:2021 \ + 2023 2022 2022:2023 2025 2024 2024:2025 2027 2026 2026:2027 \ + 2029 2028 2028:2029 2031 2030 2030:2031 2033 2032 2032:2033 \ + 2035 2034 2034:2035 2037 2036 2036:2037 2039 2038 2038:2039 \ + 2041 2040 2040:2041 2043 2042 2042:2043 2045 2044 2044:2045 \ + 2047 2046 2046:2047 2049 2048 2048:2049 2051 2050 2050:2051 \ + 2053 2052 2052:2053 2055 2054 2054:2055 2057 2056 2056:2057 \ + 2059 2058 2058:2059 2061 2060 2060:2061 2063 2062 2062:2063 \ + 2065 2064 2064:2065 2067 2066 2066:2067 2069 2068 2068:2069 \ + 2071 2070 2070:2071 2073 2072 2072:2073 2075 2074 2074:2075 \ + 2077 2076 2171 2174 2173 2172 2172:2173 2176 2175 2175:2176 \ + 2178 2177 2177:2178 2180 2179 2179:2180 2182 2181 2181:2182 \ + 2184 2183 2183:2184 2186 2185 2185:2186 2188 2187 2187:2188 \ + 2190 2189 2189:2190 2192 2191 2191:2192 2194 2193 2193:2194 \ + 2196 2195 2195:2196 2198 2197 2197:2198 2200 2199 2199:2200 \ + 2202 2201 2201:2202 2204 2203 2203:2204 2206 2205 2205:2206 \ + 2208 2207 2207:2208 2210 2209 2209:2210 2212 2211 2211:2212 \ + 2214 2213 2213:2214 2216 2215 2215:2216 2218 2217 2217:2218 \ + 2220 2219 2219:2220 2222 2221 2221:2222 2224 2223 2223:2224 \ + 2226 2225 2225:2226 2228 2227 2227:2228 2230 2229 2229:2230 \ + 2232 2231 2174 2234 2233 2173 2173 2233 2235 2176 2176 2235:2236 \ + 2178 2178 2236:2237 2180 2180 2237:2238 2182 2182 2238:2239 \ + 2184 2184 2239:2240 2186 2186 2240:2241 2188 2188 2241:2242 \ + 2190 2190 2242:2243 2192 2192 2243:2244 2194 2194 2244:2245 \ + 2196 2196 2245:2246 2198 2198 2246:2247 2200 2200 2247:2248 \ + 2202 2202 2248:2249 2204 2204 2249:2250 2206 2206 2250:2251 \ + 2208 2208 2251:2252 2210 2210 2252:2253 2212 2212 2253:2254 \ + 2214 2214 2254:2255 2216 2216 2255:2256 2218 2218 2256:2257 \ + 2220 2220 2257:2258 2222 2222 2258:2259 2224 2224 2259:2260 \ + 2226 2226 2260:2261 2228 2228 2261:2262 2230 2230 2262:2263 \ + 2232 2234 2265 2264 2233 2233 2264 2266 2235 2235 2266:2267 \ + 2236 2236 2267:2268 2237 2237 2268:2269 2238 2238 2269:2270 \ + 2239 2239 2270:2271 2240 2240 2271:2272 2241 2241 2272:2273 \ + 2242 2242 2273:2274 2243 2243 2274:2275 2244 2244 2275:2276 \ + 2245 2245 2276:2277 2246 2246 2277:2278 2247 2247 2278:2279 \ + 2248 2248 2279:2280 2249 2249 2280:2281 2250 2250 2281:2282 \ + 2251 2251 2282:2283 2252 2252 2283:2284 2253 2253 2284:2285 \ + 2254 2254 2285:2286 2255 2255 2286:2287 2256 2256 2287:2288 \ + 2257 2257 2288:2289 2258 2258 2289:2290 2259 2259 2290:2291 \ + 2260 2260 2291:2292 2261 2261 2292:2293 2262 2262 2293:2294 \ + 2263 2265 2296 2295 2264 2264 2295 2297 2266 2266 2297:2298 \ + 2267 2267 2298:2299 2268 2268 2299:2300 2269 2269 2300:2301 \ + 2270 2270 2301:2302 2271 2271 2302:2303 2272 2272 2303:2304 \ + 2273 2273 2304:2305 2274 2274 2305:2306 2275 2275 2306:2307 \ + 2276 2276 2307:2308 2277 2277 2308:2309 2278 2278 2309:2310 \ + 2279 2279 2310:2311 2280 2280 2311:2312 2281 2281 2312:2313 \ + 2282 2282 2313:2314 2283 2283 2314:2315 2284 2284 2315:2316 \ + 2285 2285 2316:2317 2286 2286 2317:2318 2287 2287 2318:2319 \ + 2288 2288 2319:2320 2289 2289 2320:2321 2290 2290 2321:2322 \ + 2291 2291 2322:2323 2292 2292 2323:2324 2293 2293 2324:2325 \ + 2294 2296 2327 2326 2295 2295 2326 2328 2297 2297 2328:2329 \ + 2298 2298 2329:2330 2299 2299 2330:2331 2300 2300 2331:2332 \ + 2301 2301 2332:2333 2302 2302 2333:2334 2303 2303 2334:2335 \ + 2304 2304 2335:2336 2305 2305 2336:2337 2306 2306 2337:2338 \ + 2307 2307 2338:2339 2308 2308 2339:2340 2309 2309 2340:2341 \ + 2310 2310 2341:2342 2311 2311 2342:2343 2312 2312 2343:2344 \ + 2313 2313 2344:2345 2314 2314 2345:2346 2315 2315 2346:2347 \ + 2316 2316 2347:2348 2317 2317 2348:2349 2318 2318 2349:2350 \ + 2319 2319 2350:2351 2320 2320 2351:2352 2321 2321 2352:2353 \ + 2322 2322 2353:2354 2323 2323 2354:2355 2324 2324 2355:2356 \ + 2325 2327 2358 2357 2326 2326 2357 2359 2328 2328 2359:2360 \ + 2329 2329 2360:2361 2330 2330 2361:2362 2331 2331 2362:2363 \ + 2332 2332 2363:2364 2333 2333 2364:2365 2334 2334 2365:2366 \ + 2335 2335 2366:2367 2336 2336 2367:2368 2337 2337 2368:2369 \ + 2338 2338 2369:2370 2339 2339 2370:2371 2340 2340 2371:2372 \ + 2341 2341 2372:2373 2342 2342 2373:2374 2343 2343 2374:2375 \ + 2344 2344 2375:2376 2345 2345 2376:2377 2346 2346 2377:2378 \ + 2347 2347 2378:2379 2348 2348 2379:2380 2349 2349 2380:2381 \ + 2350 2350 2381:2382 2351 2351 2382:2383 2352 2352 2383:2384 \ + 2353 2353 2384:2385 2354 2354 2385:2386 2355 2355 2386:2387 \ + 2356 2358 2389 2388 2357 2357 2388 2390 2359 2359 2390:2391 \ + 2360 2360 2391:2392 2361 2361 2392:2393 2362 2362 2393:2394 \ + 2363 2363 2394:2395 2364 2364 2395:2396 2365 2365 2396:2397 \ + 2366 2366 2397:2398 2367 2367 2398:2399 2368 2368 2399:2400 \ + 2369 2369 2400:2401 2370 2370 2401:2402 2371 2371 2402:2403 \ + 2372 2372 2403:2404 2373 2373 2404:2405 2374 2374 2405:2406 \ + 2375 2375 2406:2407 2376 2376 2407:2408 2377 2377 2408:2409 \ + 2378 2378 2409:2410 2379 2379 2410:2411 2380 2380 2411:2412 \ + 2381 2381 2412:2413 2382 2382 2413:2414 2383 2383 2414:2415 \ + 2384 2384 2415:2416 2385 2385 2416:2417 2386 2386 2417:2418 \ + 2387 2389 2420 2419 2388 2388 2419 2421 2390 2390 2421:2422 \ + 2391 2391 2422:2423 2392 2392 2423:2424 2393 2393 2424:2425 \ + 2394 2394 2425:2426 2395 2395 2426:2427 2396 2396 2427:2428 \ + 2397 2397 2428:2429 2398 2398 2429:2430 2399 2399 2430:2431 \ + 2400 2400 2431:2432 2401 2401 2432:2433 2402 2402 2433:2434 \ + 2403 2403 2434:2435 2404 2404 2435:2436 2405 2405 2436:2437 \ + 2406 2406 2437:2438 2407 2407 2438:2439 2408 2408 2439:2440 \ + 2409 2409 2440:2441 2410 2410 2441:2442 2411 2411 2442:2443 \ + 2412 2412 2443:2444 2413 2413 2444:2445 2414 2414 2445:2446 \ + 2415 2415 2446:2447 2416 2416 2447:2448 2417 2417 2448:2449 \ + 2418 2420 2451 2450 2419 2419 2450 2452 2421 2421 2452:2453 \ + 2422 2422 2453:2454 2423 2423 2454:2455 2424 2424 2455:2456 \ + 2425 2425 2456:2457 2426 2426 2457:2458 2427 2427 2458:2459 \ + 2428 2428 2459:2460 2429 2429 2460:2461 2430 2430 2461:2462 \ + 2431 2431 2462:2463 2432 2432 2463:2464 2433 2433 2464:2465 \ + 2434 2434 2465:2466 2435 2435 2466:2467 2436 2436 2467:2468 \ + 2437 2437 2468:2469 2438 2438 2469:2470 2439 2439 2470:2471 \ + 2440 2440 2471:2472 2441 2441 2472:2473 2442 2442 2473:2474 \ + 2443 2443 2474:2475 2444 2444 2475:2476 2445 2445 2476:2477 \ + 2446 2446 2477:2478 2447 2447 2478:2479 2448 2448 2479:2480 \ + 2449 2451 2482 2481 2450 2450 2481 2483 2452 2452 2483:2484 \ + 2453 2453 2484:2485 2454 2454 2485:2486 2455 2455 2486:2487 \ + 2456 2456 2487:2488 2457 2457 2488:2489 2458 2458 2489:2490 \ + 2459 2459 2490:2491 2460 2460 2491:2492 2461 2461 2492:2493 \ + 2462 2462 2493:2494 2463 2463 2494:2495 2464 2464 2495:2496 \ + 2465 2465 2496:2497 2466 2466 2497:2498 2467 2467 2498:2499 \ + 2468 2468 2499:2500 2469 2469 2500:2501 2470 2470 2501:2502 \ + 2471 2471 2502:2503 2472 2472 2503:2504 2473 2473 2504:2505 \ + 2474 2474 2505:2506 2475 2475 2506:2507 2476 2476 2507:2508 \ + 2477 2477 2508:2509 2478 2478 2509:2510 2479 2479 2510:2511 \ + 2480 2482 2513 2512 2481 2481 2512 2514 2483 2483 2514:2515 \ + 2484 2484 2515:2516 2485 2485 2516:2517 2486 2486 2517:2518 \ + 2487 2487 2518:2519 2488 2488 2519:2520 2489 2489 2520:2521 \ + 2490 2490 2521:2522 2491 2491 2522:2523 2492 2492 2523:2524 \ + 2493 2493 2524:2525 2494 2494 2525:2526 2495 2495 2526:2527 \ + 2496 2496 2527:2528 2497 2497 2528:2529 2498 2498 2529:2530 \ + 2499 2499 2530:2531 2500 2500 2531:2532 2501 2501 2532:2533 \ + 2502 2502 2533:2534 2503 2503 2534:2535 2504 2504 2535:2536 \ + 2505 2505 2536:2537 2506 2506 2537:2538 2507 2507 2538:2539 \ + 2508 2508 2539:2540 2509 2509 2540:2541 2510 2510 2541:2542 \ + 2511 2513 2544 2543 2512 2512 2543 2545 2514 2514 2545:2546 \ + 2515 2515 2546:2547 2516 2516 2547:2548 2517 2517 2548:2549 \ + 2518 2518 2549:2550 2519 2519 2550:2551 2520 2520 2551:2552 \ + 2521 2521 2552:2553 2522 2522 2553:2554 2523 2523 2554:2555 \ + 2524 2524 2555:2556 2525 2525 2556:2557 2526 2526 2557:2558 \ + 2527 2527 2558:2559 2528 2528 2559:2560 2529 2529 2560:2561 \ + 2530 2530 2561:2562 2531 2531 2562:2563 2532 2532 2563:2564 \ + 2533 2533 2564:2565 2534 2534 2565:2566 2535 2535 2566:2567 \ + 2536 2536 2567:2568 2537 2537 2568:2569 2538 2538 2569:2570 \ + 2539 2539 2570:2571 2540 2540 2571:2572 2541 2541 2572:2573 \ + 2542 2544 2575 2574 2543 2543 2574 2576 2545 2545 2576:2577 \ + 2546 2546 2577:2578 2547 2547 2578:2579 2548 2548 2579:2580 \ + 2549 2549 2580:2581 2550 2550 2581:2582 2551 2551 2582:2583 \ + 2552 2552 2583:2584 2553 2553 2584:2585 2554 2554 2585:2586 \ + 2555 2555 2586:2587 2556 2556 2587:2588 2557 2557 2588:2589 \ + 2558 2558 2589:2590 2559 2559 2590:2591 2560 2560 2591:2592 \ + 2561 2561 2592:2593 2562 2562 2593:2594 2563 2563 2594:2595 \ + 2564 2564 2595:2596 2565 2565 2596:2597 2566 2566 2597:2598 \ + 2567 2567 2598:2599 2568 2568 2599:2600 2569 2569 2600:2601 \ + 2570 2570 2601:2602 2571 2571 2602:2603 2572 2572 2603:2604 \ + 2573 2575 2606 2605 2574 2574 2605 2607 2576 2576 2607:2608 \ + 2577 2577 2608:2609 2578 2578 2609:2610 2579 2579 2610:2611 \ + 2580 2580 2611:2612 2581 2581 2612:2613 2582 2582 2613:2614 \ + 2583 2583 2614:2615 2584 2584 2615:2616 2585 2585 2616:2617 \ + 2586 2586 2617:2618 2587 2587 2618:2619 2588 2588 2619:2620 \ + 2589 2589 2620:2621 2590 2590 2621:2622 2591 2591 2622:2623 \ + 2592 2592 2623:2624 2593 2593 2624:2625 2594 2594 2625:2626 \ + 2595 2595 2626:2627 2596 2596 2627:2628 2597 2597 2628:2629 \ + 2598 2598 2629:2630 2599 2599 2630:2631 2600 2600 2631:2632 \ + 2601 2601 2632:2633 2602 2602 2633:2634 2603 2603 2634:2635 \ + 2604 2606 2637 2636 2605 2605 2636 2638 2607 2607 2638:2639 \ + 2608 2608 2639:2640 2609 2609 2640:2641 2610 2610 2641:2642 \ + 2611 2611 2642:2643 2612 2612 2643:2644 2613 2613 2644:2645 \ + 2614 2614 2645:2646 2615 2615 2646:2647 2616 2616 2647:2648 \ + 2617 2617 2648:2649 2618 2618 2649:2650 2619 2619 2650:2651 \ + 2620 2620 2651:2652 2621 2621 2652:2653 2622 2622 2653:2654 \ + 2623 2623 2654:2655 2624 2624 2655:2656 2625 2625 2656:2657 \ + 2626 2626 2657:2658 2627 2627 2658:2659 2628 2628 2659:2660 \ + 2629 2629 2660:2661 2630 2630 2661:2662 2631 2631 2662:2663 \ + 2632 2632 2663:2664 2633 2633 2664:2665 2634 2634 2665:2666 \ + 2635 2637 2668 2667 2636 2636 2667 2669 2638 2638 2669:2670 \ + 2639 2639 2670:2671 2640 2640 2671:2672 2641 2641 2672:2673 \ + 2642 2642 2673:2674 2643 2643 2674:2675 2644 2644 2675:2676 \ + 2645 2645 2676:2677 2646 2646 2677:2678 2647 2647 2678:2679 \ + 2648 2648 2679:2680 2649 2649 2680:2681 2650 2650 2681:2682 \ + 2651 2651 2682:2683 2652 2652 2683:2684 2653 2653 2684:2685 \ + 2654 2654 2685:2686 2655 2655 2686:2687 2656 2656 2687:2688 \ + 2657 2657 2688:2689 2658 2658 2689:2690 2659 2659 2690:2691 \ + 2660 2660 2691:2692 2661 2661 2692:2693 2662 2662 2693:2694 \ + 2663 2663 2694:2695 2664 2664 2695:2696 2665 2665 2696:2697 \ + 2666 2668 2699 2698 2667 2667 2698 2700 2669 2669 2700:2701 \ + 2670 2670 2701:2702 2671 2671 2702:2703 2672 2672 2703:2704 \ + 2673 2673 2704:2705 2674 2674 2705:2706 2675 2675 2706:2707 \ + 2676 2676 2707:2708 2677 2677 2708:2709 2678 2678 2709:2710 \ + 2679 2679 2710:2711 2680 2680 2711:2712 2681 2681 2712:2713 \ + 2682 2682 2713:2714 2683 2683 2714:2715 2684 2684 2715:2716 \ + 2685 2685 2716:2717 2686 2686 2717:2718 2687 2687 2718:2719 \ + 2688 2688 2719:2720 2689 2689 2720:2721 2690 2690 2721:2722 \ + 2691 2691 2722:2723 2692 2692 2723:2724 2693 2693 2724:2725 \ + 2694 2694 2725:2726 2695 2695 2726:2727 2696 2696 2727:2728 \ + 2697 2699 2730 2729 2698 2698 2729 2731 2700 2700 2731:2732 \ + 2701 2701 2732:2733 2702 2702 2733:2734 2703 2703 2734:2735 \ + 2704 2704 2735:2736 2705 2705 2736:2737 2706 2706 2737:2738 \ + 2707 2707 2738:2739 2708 2708 2739:2740 2709 2709 2740:2741 \ + 2710 2710 2741:2742 2711 2711 2742:2743 2712 2712 2743:2744 \ + 2713 2713 2744:2745 2714 2714 2745:2746 2715 2715 2746:2747 \ + 2716 2716 2747:2748 2717 2717 2748:2749 2718 2718 2749:2750 \ + 2719 2719 2750:2751 2720 2720 2751:2752 2721 2721 2752:2753 \ + 2722 2722 2753:2754 2723 2723 2754:2755 2724 2724 2755:2756 \ + 2725 2725 2756:2757 2726 2726 2757:2758 2727 2727 2758:2759 \ + 2728 2730 2761 2760 2729 2729 2760 2762 2731 2731 2762:2763 \ + 2732 2732 2763:2764 2733 2733 2764:2765 2734 2734 2765:2766 \ + 2735 2735 2766:2767 2736 2736 2767:2768 2737 2737 2768:2769 \ + 2738 2738 2769:2770 2739 2739 2770:2771 2740 2740 2771:2772 \ + 2741 2741 2772:2773 2742 2742 2773:2774 2743 2743 2774:2775 \ + 2744 2744 2775:2776 2745 2745 2776:2777 2746 2746 2777:2778 \ + 2747 2747 2778:2779 2748 2748 2779:2780 2749 2749 2780:2781 \ + 2750 2750 2781:2782 2751 2751 2782:2783 2752 2752 2783:2784 \ + 2753 2753 2784:2785 2754 2754 2785:2786 2755 2755 2786:2787 \ + 2756 2756 2787:2788 2757 2757 2788:2789 2758 2758 2789:2790 \ + 2759 2761 2792 2791 2760 2760 2791 2793 2762 2762 2793:2794 \ + 2763 2763 2794:2795 2764 2764 2795:2796 2765 2765 2796:2797 \ + 2766 2766 2797:2798 2767 2767 2798:2799 2768 2768 2799:2800 \ + 2769 2769 2800:2801 2770 2770 2801:2802 2771 2771 2802:2803 \ + 2772 2772 2803:2804 2773 2773 2804:2805 2774 2774 2805:2806 \ + 2775 2775 2806:2807 2776 2776 2807:2808 2777 2777 2808:2809 \ + 2778 2778 2809:2810 2779 2779 2810:2811 2780 2780 2811:2812 \ + 2781 2781 2812:2813 2782 2782 2813:2814 2783 2783 2814:2815 \ + 2784 2784 2815:2816 2785 2785 2816:2817 2786 2786 2817:2818 \ + 2787 2787 2818:2819 2788 2788 2819:2820 2789 2789 2820:2821 \ + 2790 2792 2823 2822 2791 2791 2822 2824 2793 2793 2824:2825 \ + 2794 2794 2825:2826 2795 2795 2826:2827 2796 2796 2827:2828 \ + 2797 2797 2828:2829 2798 2798 2829:2830 2799 2799 2830:2831 \ + 2800 2800 2831:2832 2801 2801 2832:2833 2802 2802 2833:2834 \ + 2803 2803 2834:2835 2804 2804 2835:2836 2805 2805 2836:2837 \ + 2806 2806 2837:2838 2807 2807 2838:2839 2808 2808 2839:2840 \ + 2809 2809 2840:2841 2810 2810 2841:2842 2811 2811 2842:2843 \ + 2812 2812 2843:2844 2813 2813 2844:2845 2814 2814 2845:2846 \ + 2815 2815 2846:2847 2816 2816 2847:2848 2817 2817 2848:2849 \ + 2818 2818 2849:2850 2819 2819 2850:2851 2820 2820 2851:2852 \ + 2821 2823 2854 2853 2822 2822 2853 2855 2824 2824 2855:2856 \ + 2825 2825 2856:2857 2826 2826 2857:2858 2827 2827 2858:2859 \ + 2828 2828 2859:2860 2829 2829 2860:2861 2830 2830 2861:2862 \ + 2831 2831 2862:2863 2832 2832 2863:2864 2833 2833 2864:2865 \ + 2834 2834 2865:2866 2835 2835 2866:2867 2836 2836 2867:2868 \ + 2837 2837 2868:2869 2838 2838 2869:2870 2839 2839 2870:2871 \ + 2840 2840 2871:2872 2841 2841 2872:2873 2842 2842 2873:2874 \ + 2843 2843 2874:2875 2844 2844 2875:2876 2845 2845 2876:2877 \ + 2846 2846 2877:2878 2847 2847 2878:2879 2848 2848 2879:2880 \ + 2849 2849 2880:2881 2850 2850 2881:2882 2851 2851 2882:2883 \ + 2852 2854 2885 2884 2853 2853 2884 2886 2855 2855 2886:2887 \ + 2856 2856 2887:2888 2857 2857 2888:2889 2858 2858 2889:2890 \ + 2859 2859 2890:2891 2860 2860 2891:2892 2861 2861 2892:2893 \ + 2862 2862 2893:2894 2863 2863 2894:2895 2864 2864 2895:2896 \ + 2865 2865 2896:2897 2866 2866 2897:2898 2867 2867 2898:2899 \ + 2868 2868 2899:2900 2869 2869 2900:2901 2870 2870 2901:2902 \ + 2871 2871 2902:2903 2872 2872 2903:2904 2873 2873 2904:2905 \ + 2874 2874 2905:2906 2875 2875 2906:2907 2876 2876 2907:2908 \ + 2877 2877 2908:2909 2878 2878 2909:2910 2879 2879 2910:2911 \ + 2880 2880 2911:2912 2881 2881 2912:2913 2882 2882 2913:2914 \ + 2883 2885 2916 2915 2884 2884 2915 2917 2886 2886 2917:2918 \ + 2887 2887 2918:2919 2888 2888 2919:2920 2889 2889 2920:2921 \ + 2890 2890 2921:2922 2891 2891 2922:2923 2892 2892 2923:2924 \ + 2893 2893 2924:2925 2894 2894 2925:2926 2895 2895 2926:2927 \ + 2896 2896 2927:2928 2897 2897 2928:2929 2898 2898 2929:2930 \ + 2899 2899 2930:2931 2900 2900 2931:2932 2901 2901 2932:2933 \ + 2902 2902 2933:2934 2903 2903 2934:2935 2904 2904 2935:2936 \ + 2905 2905 2936:2937 2906 2906 2937:2938 2907 2907 2938:2939 \ + 2908 2908 2939:2940 2909 2909 2940:2941 2910 2910 2941:2942 \ + 2911 2911 2942:2943 2912 2912 2943:2944 2913 2913 2944:2945 \ + 2914 2916 2947 2946 2915 2915 2946 2948 2917 2917 2948:2949 \ + 2918 2918 2949:2950 2919 2919 2950:2951 2920 2920 2951:2952 \ + 2921 2921 2952:2953 2922 2922 2953:2954 2923 2923 2954:2955 \ + 2924 2924 2955:2956 2925 2925 2956:2957 2926 2926 2957:2958 \ + 2927 2927 2958:2959 2928 2928 2959:2960 2929 2929 2960:2961 \ + 2930 2930 2961:2962 2931 2931 2962:2963 2932 2932 2963:2964 \ + 2933 2933 2964:2965 2934 2934 2965:2966 2935 2935 2966:2967 \ + 2936 2936 2967:2968 2937 2937 2968:2969 2938 2938 2969:2970 \ + 2939 2939 2970:2971 2940 2940 2971:2972 2941 2941 2972:2973 \ + 2942 2942 2973:2974 2943 2943 2974:2975 2944 2944 2975:2976 \ + 2945 2947 2978 2977 2946 2946 2977 2979 2948 2948 2979:2980 \ + 2949 2949 2980:2981 2950 2950 2981:2982 2951 2951 2982:2983 \ + 2952 2952 2983:2984 2953 2953 2984:2985 2954 2954 2985:2986 \ + 2955 2955 2986:2987 2956 2956 2987:2988 2957 2957 2988:2989 \ + 2958 2958 2989:2990 2959 2959 2990:2991 2960 2960 2991:2992 \ + 2961 2961 2992:2993 2962 2962 2993:2994 2963 2963 2994:2995 \ + 2964 2964 2995:2996 2965 2965 2996:2997 2966 2966 2997:2998 \ + 2967 2967 2998:2999 2968 2968 2999:3000 2969 2969 3000:3001 \ + 2970 2970 3001:3002 2971 2971 3002:3003 2972 2972 3003:3004 \ + 2973 2973 3004:3005 2974 2974 3005:3006 2975 2975 3006:3007 \ + 2976 2978 3009 3008 2977 2977 3008 3010 2979 2979 3010:3011 \ + 2980 2980 3011:3012 2981 2981 3012:3013 2982 2982 3013:3014 \ + 2983 2983 3014:3015 2984 2984 3015:3016 2985 2985 3016:3017 \ + 2986 2986 3017:3018 2987 2987 3018:3019 2988 2988 3019:3020 \ + 2989 2989 3020:3021 2990 2990 3021:3022 2991 2991 3022:3023 \ + 2992 2992 3023:3024 2993 2993 3024:3025 2994 2994 3025:3026 \ + 2995 2995 3026:3027 2996 2996 3027:3028 2997 2997 3028:3029 \ + 2998 2998 3029:3030 2999 2999 3030:3031 3000 3000 3031:3032 \ + 3001 3001 3032:3033 3002 3002 3033:3034 3003 3003 3034:3035 \ + 3004 3004 3035:3036 3005 3005 3036:3037 3006 3006 3037:3038 \ + 3007 3009 3040 3039 3008 3008 3039 3041 3010 3010 3041:3042 \ + 3011 3011 3042:3043 3012 3012 3043:3044 3013 3013 3044:3045 \ + 3014 3014 3045:3046 3015 3015 3046:3047 3016 3016 3047:3048 \ + 3017 3017 3048:3049 3018 3018 3049:3050 3019 3019 3050:3051 \ + 3020 3020 3051:3052 3021 3021 3052:3053 3022 3022 3053:3054 \ + 3023 3023 3054:3055 3024 3024 3055:3056 3025 3025 3056:3057 \ + 3026 3026 3057:3058 3027 3027 3058:3059 3028 3028 3059:3060 \ + 3029 3029 3060:3061 3030 3030 3061:3062 3031 3031 3062:3063 \ + 3032 3032 3063:3064 3033 3033 3064:3065 3034 3034 3065:3066 \ + 3035 3035 3066:3067 3036 3036 3067:3068 3037 3037 3068:3069 \ + 3038 3040 3071 3070 3039 3039 3070 3072 3041 3041 3072:3073 \ + 3042 3042 3073:3074 3043 3043 3074:3075 3044 3044 3075:3076 \ + 3045 3045 3076:3077 3046 3046 3077:3078 3047 3047 3078:3079 \ + 3048 3048 3079:3080 3049 3049 3080:3081 3050 3050 3081:3082 \ + 3051 3051 3082:3083 3052 3052 3083:3084 3053 3053 3084:3085 \ + 3054 3054 3085:3086 3055 3055 3086:3087 3056 3056 3087:3088 \ + 3057 3057 3088:3089 3058 3058 3089:3090 3059 3059 3090:3091 \ + 3060 3060 3091:3092 3061 3061 3092:3093 3062 3062 3093:3094 \ + 3063 3063 3094:3095 3064 3064 3095:3096 3065 3065 3096:3097 \ + 3066 3066 3097:3098 3067 3067 3098:3099 3068 3068 3099:3100 \ + 3069 3071 2016:2017 3070 3070 2017 2020 3072 3072 2020 2022 3073 3073 2022 2024 3074 3074 2024 2026 3075 3075 2026 2028 3076 3076 2028 2030 3077 3077 2030 2032 3078 3078 2032 2034 3079 3079 2034 2036 3080 3080 2036 2038 3081 3081 2038 2040 3082 3082 2040 2042 3083 3083 2042 2044 3084 3084 2044 2046 3085 3085 2046 2048 3086 3086 2048 2050 3087 3087 2050 2052 3088 3088 2052 2054 3089 3089 2054 2056 3090 3090 2056 2058 3091 3091 2058 2060 3092 3092 2060 2062 3093 3093 2062 2064 3094 3094 2064 2066 3095 3095 2066 2068 3096 3096 2068 2070 3097 3097 2070 2072 3098 3098 2072 2074 3099 3099 2074 2076 3100 " ) +VCmd.SetObjectArrayValue( var1, r"GraphicSelection", lst1_count, lst1 ) +ret=VCmd.ExecuteCommand( var4, r"UpdateSelection" ) +ret=VCmd.ExecuteCommand( var4, r"AddEntity" ) +VCmd.SetStringValue( var4, r"BcName", r"Normal Locking_3" ) +VCmd.SetIntValue( var5, r"CleaFlag", 256 ) +VCmd.Quit( var4 ) +#__________________ ProcessConditions END __________________ +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/37_DistortionSimulationParameters.py b/PHASES/AUTOMATION_ML/utils/37_DistortionSimulationParameters.py index bd2c685..f065320 100644 --- a/PHASES/AUTOMATION_ML/utils/37_DistortionSimulationParameters.py +++ b/PHASES/AUTOMATION_ML/utils/37_DistortionSimulationParameters.py @@ -1,94 +1,94 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 30 15:07:57 2023 - -@author: SMO -""" -import os - -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.0 -# Date : Thu Mar 30 15:05:43 2023 -#------------------------------------------------------------------------------- -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - -print(100*'_') -print('DISTORTION, Simulation parameters. p37') -print('Reading list of variables') - -#External Variables file: -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - VdbDistortionFilePath = linesplit[2] - if 'CuringCATGENerfPath' in line: - linesplit = line.partition('= ') - #Extract Variable name, value and IDnumber identificator - CuringCATGENerfPath = linesplit[2] - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) - -#__________________ SimulationControl BEGIN __________________ -var4=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) -VCmd.SetObjectValue( var4, r"CurrentModel", "M @0" ) -VCmd.SetStringValue( var4, r"ErfModel", CuringCATGENerfPath ) -VCmd.SetStringValue( var4, r"FrequencyType", r"Every Step" ) -VCmd.Accept( var4 ) -VCmd.Accept( var4 ) -VCmd.Quit( var4 ) - -#__________________ SimulationControl END __________________ -VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) -# VE.NewSession( ) +# -*- coding: utf-8 -*- +""" +Created on Thu Mar 30 15:07:57 2023 + +@author: SMO +""" +import os + +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.0 +# Date : Thu Mar 30 15:05:43 2023 +#------------------------------------------------------------------------------- +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + +print(100*'_') +print('DISTORTION, Simulation parameters. p37') +print('Reading list of variables') + +#External Variables file: +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + VdbDistortionFilePath = linesplit[2] + if 'CuringCATGENerfPath' in line: + linesplit = line.partition('= ') + #Extract Variable name, value and IDnumber identificator + CuringCATGENerfPath = linesplit[2] + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) + +#__________________ SimulationControl BEGIN __________________ +var4=VCmd.Activate( 1, r"VCompUtils.VCompUtilsCmdInterface", r"SimulationControl" ) +VCmd.SetObjectValue( var4, r"CurrentModel", "M @0" ) +VCmd.SetStringValue( var4, r"ErfModel", CuringCATGENerfPath ) +VCmd.SetStringValue( var4, r"FrequencyType", r"Every Step" ) +VCmd.Accept( var4 ) +VCmd.Accept( var4 ) +VCmd.Quit( var4 ) + +#__________________ SimulationControl END __________________ +VExpMngr.ExportFile( VdbDistortionFilePath, 0 ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) +# VE.NewSession( ) diff --git a/PHASES/AUTOMATION_ML/utils/38_DistortionRun.py b/PHASES/AUTOMATION_ML/utils/38_DistortionRun.py index a1af481..9f5ae1b 100644 --- a/PHASES/AUTOMATION_ML/utils/38_DistortionRun.py +++ b/PHASES/AUTOMATION_ML/utils/38_DistortionRun.py @@ -1,88 +1,88 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -#------------------------------------------------------------------------------- -# Session File -# ESI Group -# https://www.esi-group.com -# Copyright (C) ESI Group 2022. All rights reserved. -#------------------------------------------------------------------------------- -# Product : Visual-Environment 18.5 -# Date : Fri Apr 7 10:28:05 2023 -#------------------------------------------------------------------------------- -import os - -null='' -from VgPoint3 import * -from VgPoint2 import * -from VgMatrix import * -import VScn -import VGuiUtl -import VCmdGui -import VCmd -import VCmdFramework -import VistaDb -NULL=VistaDb.PythonCNULL() -import VistaDb -#__________________ VhmCommand BEGIN __________________ -var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) -import VHostManager -import VE -import VExpMngr -#__________________ SessionCommand BEGIN __________________ -var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) -import VToolKit -#__________________ VEAction BEGIN __________________ -var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) -import VBrowserManager -import VMaterial -import VMeshMdlr -ret=VE.ChangeContext( r"Visual-RTM" ) -VE.SetActiveWindow( r"p1w1" ) -ret=VE.ChangeContext( r"Visual-Distortion" ) -VE.SetCurrentPage( 1 ) - -print('100*_') -print('DISTORTION, Run data cast. p38') -print('Reading list of variables') - -#External Variables file: -Scriptsfolder = os.getcwd() -VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') - -#SMO: read macro directory from temporary file -line_no = 0 - -incfile= open(VariablesList,"r") -if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'VdbDistortionFilePath' in line: - linesplit = line.partition('= ') - VdbDistortionFilePath = linesplit[2] - if 'DistortionSolverFolderPath' in line: - linesplit = line.partition('= ') - DistortionSolverFolderPath = linesplit[2] - if 'outputs_files_folder' in line: - linesplit = line.partition('= ') - new_working_directory = linesplit[2] - -ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) -ret=VE.ModelChange( "M @0" ) - -#__________________ SolverManager BEGIN __________________ -var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) -ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) -VCmd.Quit( var4 ) -#__________________ SolverManager BEGIN __________________ -# var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) -# VCmd.SetGuStringValue( var4, r"SolverPath", DistortionSolverFolderPath ) -# VCmd.SetIntValue( var4, r"NumProcesrs", 1 ) -# ret=VCmd.ExecuteCommand( var4, r"RUN" ) -# ret=VE.ModelDestroy( "M @0" ) -# VE.SetCurrentPage( 1 ) -# VE.SetCurrentPage( 1 ) -# VE.SetActiveWindow( r"p1w1" ) +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +#------------------------------------------------------------------------------- +# Session File +# ESI Group +# https://www.esi-group.com +# Copyright (C) ESI Group 2022. All rights reserved. +#------------------------------------------------------------------------------- +# Product : Visual-Environment 18.5 +# Date : Fri Apr 7 10:28:05 2023 +#------------------------------------------------------------------------------- +import os + +null='' +from VgPoint3 import * +from VgPoint2 import * +from VgMatrix import * +import VScn +import VGuiUtl +import VCmdGui +import VCmd +import VCmdFramework +import VistaDb +NULL=VistaDb.PythonCNULL() +import VistaDb +#__________________ VhmCommand BEGIN __________________ +var1=VCmd.Activate( 1, r"VHostManagerPlugin.VhmInterface", r"VhmCommand" ) +import VHostManager +import VE +import VExpMngr +#__________________ SessionCommand BEGIN __________________ +var2=VCmd.Activate( 1, r"VSessionManager.Command", r"SessionCommand" ) +import VToolKit +#__________________ VEAction BEGIN __________________ +var3=VCmd.Activate( 1, r"VToolKit.VSectionCutInterface", r"VEAction" ) +import VBrowserManager +import VMaterial +import VMeshMdlr +ret=VE.ChangeContext( r"Visual-RTM" ) +VE.SetActiveWindow( r"p1w1" ) +ret=VE.ChangeContext( r"Visual-Distortion" ) +VE.SetCurrentPage( 1 ) + +print('100*_') +print('DISTORTION, Run data cast. p38') +print('Reading list of variables') + +#External Variables file: +Scriptsfolder = os.getcwd() +VariablesList = os.path.join(Scriptsfolder, 'VariablesList.txt') + +#SMO: read macro directory from temporary file +line_no = 0 + +incfile= open(VariablesList,"r") +if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'VdbDistortionFilePath' in line: + linesplit = line.partition('= ') + VdbDistortionFilePath = linesplit[2] + if 'DistortionSolverFolderPath' in line: + linesplit = line.partition('= ') + DistortionSolverFolderPath = linesplit[2] + if 'outputs_files_folder' in line: + linesplit = line.partition('= ') + new_working_directory = linesplit[2] + +ret=VExpMngr.LoadFile( VdbDistortionFilePath, 0 ) +ret=VE.ModelChange( "M @0" ) + +#__________________ SolverManager BEGIN __________________ +var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +VCmd.SetGuStringValue( var4, r"WorkingDir", new_working_directory ) +ret=VCmd.ExecuteCommand( var4, r"RunDataCAST" ) +VCmd.Quit( var4 ) +#__________________ SolverManager BEGIN __________________ +# var4=VCmd.Activate( 1, r"VRTMUtilities.VRTMInterface", r"SolverManager" ) +# VCmd.SetGuStringValue( var4, r"SolverPath", DistortionSolverFolderPath ) +# VCmd.SetIntValue( var4, r"NumProcesrs", 1 ) +# ret=VCmd.ExecuteCommand( var4, r"RUN" ) +# ret=VE.ModelDestroy( "M @0" ) +# VE.SetCurrentPage( 1 ) +# VE.SetCurrentPage( 1 ) +# VE.SetActiveWindow( r"p1w1" ) # VE.NewSession( ) \ No newline at end of file diff --git a/PHASES/AUTOMATION_ML/utils/bbesi_rtm_api.py b/PHASES/AUTOMATION_ML/utils/bbesi_rtm_api.py index 1bb471a..e0cfd17 100644 --- a/PHASES/AUTOMATION_ML/utils/bbesi_rtm_api.py +++ b/PHASES/AUTOMATION_ML/utils/bbesi_rtm_api.py @@ -96,7 +96,7 @@ def solveStep(self, runInBackground=False): elif machine == 'HPCBSC': try: - linesToWrite = self.solverPath + " " + self.inputFile + " -mpidir=/gpfs/projects/bsce81/MN4/bsce81/esi/intelmpi/2019.11/Linux_x86_64/intel64/bin -mpi impi-2019.11 -np " + str(self.np) + " > " + self.outputFile + ' 2>&1' + linesToWrite = self.solverPath + " " + self.inputFile + " -mpidir=/gpfs/projects/bsce81/MN4/bsce81/esi_25/intelmpi/2019.11/Linux_x86_64/intel64/bin -mpi impi-2019.11 -np " + str(self.np) + " > " + self.outputFile + ' 2>&1' #print("DISTORTION launch command : ") #print(linesToWrite) subprocess.call(linesToWrite, shell=True) diff --git a/PHASES/BEFORESIMULATION/__pycache__/__init__.cpython-39.pyc b/PHASES/BEFORESIMULATION/__pycache__/__init__.cpython-39.pyc old mode 100755 new mode 100644 index 0455846..b471393 Binary files a/PHASES/BEFORESIMULATION/__pycache__/__init__.cpython-39.pyc and b/PHASES/BEFORESIMULATION/__pycache__/__init__.cpython-39.pyc differ diff --git a/PHASES/BEFORESIMULATION/__pycache__/alya.cpython-39.pyc b/PHASES/BEFORESIMULATION/__pycache__/alya.cpython-39.pyc index 1a04962..7f6607a 100644 Binary files a/PHASES/BEFORESIMULATION/__pycache__/alya.cpython-39.pyc and b/PHASES/BEFORESIMULATION/__pycache__/alya.cpython-39.pyc differ diff --git a/PHASES/BEFORESIMULATION/alya.py b/PHASES/BEFORESIMULATION/alya.py index 5c6b4e2..a2955aa 100755 --- a/PHASES/BEFORESIMULATION/alya.py +++ b/PHASES/BEFORESIMULATION/alya.py @@ -1,5 +1,7 @@ import importlib +import sys import os +###sys.path.append(os.path.dirname(os.path.abspath(__file__))) import re import shutil from pycompss.api.task import task @@ -184,6 +186,121 @@ def prepare_dom(prepare_args, **kwargs): return +##@task(returns=1) +@constraint(computing_units=gen_cores) +@task(returns=1, on_failure="CANCEL_SUCCESSORS", time_out=gen_timeout ) +def USECASEconvert_and_surrogate(**prepare_args): + ########################## USECASE convert ##################### + import USECASEconvert + input_files_folder = get_value(prepare_args, "input_files_folder") + output_files_folder = get_value(prepare_args, "output_files_folder") + lperm_path = get_value(prepare_args, "lperm_path") + inp_path = get_value(prepare_args, "inp_path") + voids_path = get_value(prepare_args, "voids_path") + #if not os.path.isdir(voids_path): + # os.makedirs(voids_path) + template_path = get_value(prepare_args, "template_COUPONtool") + mechanical_base_name = get_value(prepare_args, "Mechanical_Base_Name") #ogv or poc1 + line = get_value(prepare_args, "line") + DoE_line = get_value(prepare_args, "DoE_line") # check this line + # Look for the proper .lperm and .inp files ({case_number}.lperm, {case_number}.inp) + case_number = line[4:] + #case_number = int(get_value(prepare_args, "index")) + 1 + # Finding .lperm file + files = os.listdir(lperm_path) + #print(f"Files in lperm path: {files}", flush=True) + for file in files: + if file == f"{str(mechanical_base_name)}-s{str(case_number)}.lperm": + lperm_file_path = os.path.join(lperm_path, file) + #print(f"Found lperm file: {lperm_file_path}", flush=True) + break + else: + print("No matching .lperm file found", flush=True) + return + + # Finding .inp file + files = os.listdir(inp_path) + #print(f"Files in inp path: {files}", flush=True) + for file in files: + if file == f"{str(mechanical_base_name)}-s{str(case_number)}.inp": + inp_file_path = os.path.join(inp_path, file) + #print(f"Found inp file: {inp_file_path}", flush=True) + break + else: + print("No matching .inp file found", flush=True) + return + + # Finding voids.txt file + files = os.listdir(voids_path) + #print(f"Files in voids path: {files}", flush=True) + for file in files: + full_path = os.path.join(voids_path, file) + # Skip if it's a folder + if not os.path.isfile(full_path): + continue + if file == f"voids-s{str(case_number)}.txt": + voids_file_path = full_path + #print(f"Found voids file: {voids_file_path}", flush=True) + break + #else: + #print("No matching voids.txt file found", flush=True) + #return + + # get ori from DoE + ori = [] + if DoE_line and 'Orientation' in DoE_line: + orientation = DoE_line.get('Orientation', None) + split = orientation.split("&") + for s in split: + ori.append(float(s.split("#")[1])) + #print(f"Orientation found: {ori}", flush=True) + else: + print("No orientation found in DoE line", flush=True) + + # Modify the template + row_folder = get_value(prepare_args, "row_folder") + modified_template_path = os.path.join(row_folder, "config") + #print(f"Modified template path: {modified_template_path}", flush=True) + + if not os.path.isdir(modified_template_path): + os.makedirs(modified_template_path) + #print(f"Created directory: {modified_template_path}", flush=True) + + modified_template_file = os.path.join(modified_template_path, "inputs_USECASE_convert.yaml") + + if mechanical_base_name == "ogv": + geometry_value = "OGV" + elif mechanical_base_name == "poc1": + geometry_value = "POC1" + elif mechanical_base_name == "poc2": + geometry_value = "POC2" + else: + geometry_value = mechanical_base_name + + with open(modified_template_file, 'w') as f2: + with open(template_path, 'r') as f: + filedata = f.read() + filedata = filedata.replace("%lperm_file_path%", str(lperm_file_path)) + filedata = filedata.replace("%inp_file_path%", str(inp_file_path)) + filedata = filedata.replace("%voids_file_path%", str(voids_file_path)) + filedata = filedata.replace("%output_path%", str(output_files_folder)) + filedata = filedata.replace("%JobName%", str(mechanical_base_name)) + filedata = filedata.replace("%Geometry%", geometry_value) + if len(ori) > 0: + filedata = filedata.replace("%ori%", str(ori)) + f2.write(filedata) + #print(f"Modified template content written in path {modified_template_file}", flush=True) + #print(filedata, flush=True) + f.close() + f2.close() + + USECASEconvert.runUSECASEconvert(modified_template_file) + print("USECASEconvert executed", flush=True) + + ########################## SURROGATE ####################### + return + + @task(returns=1) def prepare_rve_dom(prepare_args, **kwargs): simulation_wdir = get_value(prepare_args, "simulation_wdir") diff --git a/PHASES/ESI/utils/lecture_erf.py b/PHASES/ESI/utils/lecture_erf.py index 590c4fb..4d0e435 100644 --- a/PHASES/ESI/utils/lecture_erf.py +++ b/PHASES/ESI/utils/lecture_erf.py @@ -1,444 +1,444 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Oct 25 09:34:26 2018 - -read the H5 file of Sysweld. Help may be found at http://docs.h5py.org/en/latest/quick.html - -@author: yleguennec -""" - -import h5py as h5py -from os import chdir -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - - -class results_process: - - def __init__(self): - self.file = "" - self.dir = "" - self.nodes_id = np.ndarray(()) - self.nodes_coord = np.ndarray(()) - self.nbre_states = 0 - self.nb_part = np.ndarray(()) - self.disp = np.ndarray(()) - self.connectivities = np.ndarray(()) - self.macro_voids = np.ndarray(()) - - def read_erf_file(self, f): - #chdir(self.dir) - f = h5py.File(f, 'r') - return f - - def close_erf_file(self, f): - f.close() - return None - - - def extract_level(self, f, ID_extract, keys_glob, display_list = 0): - list_keys_0 = list(f.keys()) - if display_list: - print(list_keys_0) - c_00 = f[list_keys_0[ID_extract]] - keys_glob.append(list_keys_0[ID_extract]) - - return c_00 - - def extract_time(self, f): - - self.extract_nbre_instants(f) - name_state = list(f['post/singlestate/']) - vec_temps = np.zeros(self.nbre_states) - for ijk_instant in range(self.nbre_states): - vec_temps[ijk_instant] = list(f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/Translational_Displacement/ZONE1_set1/erfblock/indexval'])[0] - self.time_vec = vec_temps - return None - - - def extract_disp_node(self, f, ID_state): - keys_glob = [] - print(ID_state) - c_00 = self.extract_level(f, 1, keys_glob,0) - c_000 = self.extract_level(c_00, 3, keys_glob) - c_0000 = self.extract_level(c_000, ID_state, keys_glob) - c_00000 = self.extract_level(c_0000, 0, keys_glob) - c_000000 = self.extract_level(c_00000, 0, keys_glob) - c_0000000 = self.extract_level(c_000000, 4, keys_glob) - c_00000000 = self.extract_level(c_0000000, 0, keys_glob) - c_000000000 = self.extract_level(c_00000000, 0, keys_glob) - c_0000000000 = self.extract_level(c_000000000, 4, keys_glob) - - print(keys_glob) - print(c_0000000000.shape) - val_c_0000000000 = c_0000000000[:] - - self.disp = val_c_0000000000 - - return None - - def extract_coord_node(self, f): - keys_glob = [] - nodes_id=np.asarray(f[u'post/constant/entityresults/NODE/COORDINATE/ZONE1_set0/erfblock/entid']) - self.nodes_id = nodes_id - self.nbre_nodes = len(nodes_id) - - nodes_coord=np.asarray(f[u'post/constant/entityresults/NODE/COORDINATE/ZONE1_set0/erfblock/res']) - self.nodes_coord = nodes_coord[:, [0,1,2]] - return None - - def extract_nbre_instants(self, f): - self.nbre_states = len(list(f['post']['singlestate'])) - print("nb state") - print(self.nbre_states) - return self.nbre_states - - def extract_nbre_part(self,f): - self.nb_part = np.asarray(f[u'post/constant/parts/PART/erfblock/pid']) - print("nb state") - print(self.nb_part) - return None - - def extract_macro_void_and_write(self, f, output): - nbre_states = len(list(f['post']['singlestate'])) - print("nb state") - print(nbre_states) - name_state = list(f['post/singlestate/']) - macro_voids = np.zeros((self.nbre_nodes, nbre_states)) - for ijk_instant in range(nbre_states): - res_t = f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/MACRO_VOIDS/ZONE1_set0/erfblock/res'] - macro_voids[:,ijk_instant] = np.array(res_t).squeeze(1) - self.macro_voids = macro_voids - incfile= open(output,"w") - for i in range(self.nbre_nodes): - incfile.write(str(macro_voids[i, -1])) - incfile.write("\n") - - incfile.close() - - - - - def extract_connectivities(self, f): - self.connectivities = np.asarray(f[u'post/constant/connectivities/TETRA4/erfblock/ic']) - self.elem_id = np.asarray(f[u'post/constant/connectivities/TETRA4/erfblock/idele']) - self.nbelem = len(self.elem_id) - - - return None - - def plot_3D_brut(self): - - fig = plt.figure() - ax = fig.add_subplot(111, projection='3d') - - ax.scatter(self.nodes_coord[:,0], self.nodes_coord[:,1], self.nodes_coord[:,2]+self.disp[:,-1], s=10, c = np.linalg.norm(self.disp,axis = 1)) - - ax.axis('equal') - ax.set_xlabel('X') - ax.set_ylabel('Y') - ax.set_zlabel('Z') - - - plt.show() - - return None - - def extract_filling_factor(self,fid_f): - name_state = list(fid_f['post/singlestate/']) - filling_factor = np.zeros((self.nbre_nodes, self.nbre_states)) - for ijk_instant in range(self.nbre_states): - res_t = fid_f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/FILLING_FACTOR/ZONE1_set0/erfblock/res'] - filling_factor[:,ijk_instant] = np.array(res_t).squeeze(1) - self.filling_factor = filling_factor - return None - - def extract_data(self, fid_f, data_type): - name_state = list(fid_f['post/singlestate/']) - data = np.zeros((self.nbre_nodes, len(name_state))) - for ijk_instant in range(len(name_state)): - res_t = fid_f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/' + str(data_type) + '/ZONE1_set0/erfblock/res'] - data[:,ijk_instant] = np.array(res_t).squeeze(1) - self.data = data - return None - - - - - def save_res(self): - fid_recap = open(self.dir + '\\res_ZF_num.txt', 'w') - res_vec = [self.larg_001, self.larg_05, self.larg_09, self.penetration, self.longueur, self.mid_longueur, self.Tmax_8_4, self.Tmax_2_4, self.Tmax_23, self.Tmax_24_7, self.cooling_time_8_4, self.cooling_time_2_4, self.cooling_time_23, self.cooling_time_24_7, self.T_max_0_5_4, self.T_max_4_2_0, self.T_max_m4_2_0] - np.savetxt(fid_recap, res_vec) - fid_recap.close() - return None - - - def init_vtk(self): - self.hash_table = [] - for i in range(max(self.nodes_id[:])+1): - data = [] - data.append(i) - data.append(-1) - self.hash_table.append(data) - - for i in range(len(self.nodes_id)): - self.hash_table[self.nodes_id[i]][1] = i - fid_f = self.read_erf_file(self.f_file) - fid_c = self.read_erf_file(self.c_file) - fid_d = self.read_erf_file(self.d_file) - - f_nb_step = self.extract_nbre_instants(fid_f) - c_nb_step = self.extract_nbre_instants(fid_c) - d_nb_step = self.extract_nbre_instants(fid_d) - - max_step = max(f_nb_step, c_nb_step, d_nb_step) - for i in range(max_step): - print(i) - self.write_vtk(str(i)) - print("ok") - - def write_vtk(self, step): - incfile= open(self.vtkfilename + "_" + str(step) + ".vtk","w") - incfile.write("# vtk DataFile Version 2.0\n") - incfile.write("shell.vtk, Created by yds\n") - incfile.write("ASCII\n") - incfile.write("DATASET UNSTRUCTURED_GRID\n") - incfile.write("POINTS ") - incfile.write(str(self.nbre_nodes)) - incfile.write(" double\n") - for i in range(self.nbre_nodes): - incfile.write(str(self.nodes_coord[i,0])) - incfile.write(" ") - incfile.write(str(self.nodes_coord[i,1])) - incfile.write(" ") - incfile.write(str(self.nodes_coord[i,2])) - incfile.write("\n") - incfile.write("\n") - incfile.write("CELLS ") - incfile.write(str(self.nbelem)) - incfile.write(" ") - incfile.write(str(5*self.nbelem)) - incfile.write("\n") - for i in range(self.nbelem): - incfile.write("4 ") - incfile.write(str(self.hash_table[self.connectivities[i, 0]][1])) - incfile.write(" ") - incfile.write(str(self.hash_table[self.connectivities[i, 1]][1])) - incfile.write(" ") - incfile.write(str(self.hash_table[self.connectivities[i, 2]][1])) - incfile.write(" ") - incfile.write(str(self.hash_table[self.connectivities[i, 3]][1])) - incfile.write("\n") - incfile.write("\n") - incfile.write("CELL_TYPES ") - incfile.write(str(self.nbelem)) - incfile.write("\n") - for i in range(self.nbelem): - incfile.write("10 ") - incfile.write("\n") - # incfile.write("\n") - # incfile.write("POINT_DATA ") - # incfile.write(str(self.nbre_nodes)) - # incfile.write("\n") - # incfile.write("FIELD FieldData 1") - # incfile.write("\n") - # incfile.write("1_disp_x 1 ") - # incfile.write(str(self.nbre_nodes)) - # incfile.write(" double") - # incfile.write("\n") - # for i in range(self.nbre_nodes): - # if physic == "temperature": - # incfile.write(str(self.temperature_curing[i,int(step)])) - # incfile.write("\n") - # incfile.write("\n") - incfile.close() - - - def add_data_to_vtk(self, type): - fid_f = self.read_erf_file(self.f_file) - fid_c = self.read_erf_file(self.c_file) - fid_d = self.read_erf_file(self.d_file) - - f_nb_step = self.extract_nbre_instants(fid_f) - c_nb_step = self.extract_nbre_instants(fid_c) - d_nb_step = self.extract_nbre_instants(fid_d) - - max_step = max(f_nb_step, c_nb_step, d_nb_step) - - for k in range(len(type)): - - if type[k] == "f_temperature": - self.extract_data(fid_f, 'TEMPERATURE') - if type[k] == "f_porosities": - self.extract_data(fid_f, 'MACRO_VOIDS') - elif type[k] == "c_temperature": - self.extract_data(fid_c, 'TEMPERATURE') - elif type[k] == "f_pressure" : - self.extract_data(fid_f, 'PRESSURE') - elif type[k] == "f_filling_time" : - self.extract_data(fid_f, 'MATERIAL_AGE') - elif type[k] == "f_filling_factor": - self.extract_data(fid_f, 'FILLING_FACTOR') - elif type[k] == "c_alpha" : - self.extract_data(fid_c, 'CURE') - - for i in range(max_step): - if type[k] != "d_disp": - if (k == 0): - incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") - incfile.write("\n") - incfile.write("POINT_DATA ") - incfile.write(str(self.nbre_nodes)) - incfile.write("\n") - incfile.write("FIELD FieldData " + str(len(type))) - incfile.write("\n") - incfile.write(str(type[k]) + " 1 ") - incfile.write(str(self.nbre_nodes)) - incfile.write(" double") - incfile.write("\n") - else: - incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") - incfile.write("\n") - incfile.write(str(type[k]) + " 1 ") - incfile.write(str(self.nbre_nodes)) - incfile.write(" double") - incfile.write("\n") - - for j in range(self.nbre_nodes): - if type[k] == "f_temperature" or type[k] == "c_temperature": - if i < (self.data.shape[1]): - incfile.write(str(self.data[j,int(i)]-273.15)) - incfile.write("\n") - else: - incfile.write(str(self.data[j,-1]-273.15)) - incfile.write("\n") - else: - if i < (self.data.shape[1]): - incfile.write(str(self.data[j,int(i)])) - incfile.write("\n") - else: - incfile.write(str(self.data[j,-1])) - incfile.write("\n") - - - else: - if i < (d_nb_step): - self.extract_disp_node(fid_d, i) - incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") - incfile.write("\n") - incfile.write(str(type[k]) + " 3 ") - incfile.write(str(self.nbre_nodes)) - incfile.write(" double") - incfile.write("\n") - for j in range(self.nbre_nodes): - incfile.write(str(self.disp[j][0])) - incfile.write(" ") - incfile.write(str(self.disp[j][1])) - incfile.write(" ") - incfile.write(str(self.disp[j][2])) - incfile.write("\n") - else: - self.extract_disp_node(fid_d, d_nb_step-1) - incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") - incfile.write("\n") - incfile.write(str(type[k]) + " 3 ") - incfile.write(str(self.nbre_nodes)) - incfile.write(" double") - incfile.write("\n") - for j in range(self.nbre_nodes): - incfile.write(str(self.disp[j][0])) - incfile.write(" ") - incfile.write(str(self.disp[j][1])) - incfile.write(" ") - incfile.write(str(self.disp[j][2])) - - incfile.write("\n") - - - incfile.write("\n") - incfile.close() - - - -if (__name__ == "__main__"): - def extract_coord(self, filename): - - self.dir = "." - self.file = filename - fid_Y = self.read_erf_file() - self.extract_coord_node(fid_Y) - self.extract_nbre_instants(fid_Y) - self.close_erf_file(fid_Y) - - - def extract_temperature(self, filename): - self.dir = "." - self.file = filename - fid_Y = self.read_erf_file() - self.extract_temperature(fid_Y) - self.close_erf_file(fid_Y) - - def extract_disp(self, filename): - self.dir = "." - self.file = filename - fid_Y = self.read_erf_file() - self.extract_temperature(fid_Y) - self.extract_disp_node(fid_Y,1) - - - def write_vtk(self): - - #objet_Y.extract_disp_node(fid_Y,1) - #objet_Y.extract_time(fid_Y) - #objet_Y.extract_filling_factor(fid_Y) - #objet_Y.extract_temperature(fid_Y) - #objet_Y.close_erf_file(fid_Y) - #objet_Y.plot_3D_brut() - - for i in range(max(self.nodes_id[:])+1): - data = [] - data.append(i) - data.append(-1) - self.hash_table.append(data) - - for i in range(len(self.nodes_id)): - self.hash_table[self.nodes_id[i]][1] = i - for i in range(self.nbre_states): - print(i) - self.write_vtk(str(i)) - print("ok") - - - -def extract_data_process_filling(inputFilePath, inputFileName, nbStepDist): - objet_Y = results_process() - objet_Y.dir = inputFilePath - objet_Y.file = inputFileName - fid_Y = objet_Y.read_erf_file() - objet_Y.extract_coord_node(fid_Y) - objet_Y.extract_nbre_instants(fid_Y) - objet_Y.extract_disp_node(fid_Y,nbStepDist) - objet_Y.extract_time(fid_Y) - objet_Y.close_erf_file(fid_Y) - #objet_Y.plot_3D_brut() - - return objet_Y.disp - -def extract_num_step_filling(inputFilePath): - objet_Y = results_process() - objet_Y.file = inputFilePath - fid_Y = objet_Y.read_erf_file(objet_Y.file) - objet_Y.extract_nbre_instants(fid_Y) - - return objet_Y.nbre_states - -def extract_num_part(inputFilePath): - objet_Y = results_process() - objet_Y.dir = inputFilePath - objet_Y.file = inputFileName - fid_Y = objet_Y.read_erf_file() - objet_Y.extract_nbre_part(fid_Y) - - return objet_Y.nb_part - +# -*- coding: utf-8 -*- +""" +Created on Thu Oct 25 09:34:26 2018 + +read the H5 file of Sysweld. Help may be found at http://docs.h5py.org/en/latest/quick.html + +@author: yleguennec +""" + +import h5py as h5py +from os import chdir +import numpy as np +import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D + + +class results_process: + + def __init__(self): + self.file = "" + self.dir = "" + self.nodes_id = np.ndarray(()) + self.nodes_coord = np.ndarray(()) + self.nbre_states = 0 + self.nb_part = np.ndarray(()) + self.disp = np.ndarray(()) + self.connectivities = np.ndarray(()) + self.macro_voids = np.ndarray(()) + + def read_erf_file(self, f): + #chdir(self.dir) + f = h5py.File(f, 'r') + return f + + def close_erf_file(self, f): + f.close() + return None + + + def extract_level(self, f, ID_extract, keys_glob, display_list = 0): + list_keys_0 = list(f.keys()) + if display_list: + print(list_keys_0) + c_00 = f[list_keys_0[ID_extract]] + keys_glob.append(list_keys_0[ID_extract]) + + return c_00 + + def extract_time(self, f): + + self.extract_nbre_instants(f) + name_state = list(f['post/singlestate/']) + vec_temps = np.zeros(self.nbre_states) + for ijk_instant in range(self.nbre_states): + vec_temps[ijk_instant] = list(f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/Translational_Displacement/ZONE1_set1/erfblock/indexval'])[0] + self.time_vec = vec_temps + return None + + + def extract_disp_node(self, f, ID_state): + keys_glob = [] + print(ID_state) + c_00 = self.extract_level(f, 1, keys_glob,0) + c_000 = self.extract_level(c_00, 3, keys_glob) + c_0000 = self.extract_level(c_000, ID_state, keys_glob) + c_00000 = self.extract_level(c_0000, 0, keys_glob) + c_000000 = self.extract_level(c_00000, 0, keys_glob) + c_0000000 = self.extract_level(c_000000, 4, keys_glob) + c_00000000 = self.extract_level(c_0000000, 0, keys_glob) + c_000000000 = self.extract_level(c_00000000, 0, keys_glob) + c_0000000000 = self.extract_level(c_000000000, 4, keys_glob) + + print(keys_glob) + print(c_0000000000.shape) + val_c_0000000000 = c_0000000000[:] + + self.disp = val_c_0000000000 + + return None + + def extract_coord_node(self, f): + keys_glob = [] + nodes_id=np.asarray(f[u'post/constant/entityresults/NODE/COORDINATE/ZONE1_set0/erfblock/entid']) + self.nodes_id = nodes_id + self.nbre_nodes = len(nodes_id) + + nodes_coord=np.asarray(f[u'post/constant/entityresults/NODE/COORDINATE/ZONE1_set0/erfblock/res']) + self.nodes_coord = nodes_coord[:, [0,1,2]] + return None + + def extract_nbre_instants(self, f): + self.nbre_states = len(list(f['post']['singlestate'])) + print("nb state") + print(self.nbre_states) + return self.nbre_states + + def extract_nbre_part(self,f): + self.nb_part = np.asarray(f[u'post/constant/parts/PART/erfblock/pid']) + print("nb state") + print(self.nb_part) + return None + + def extract_macro_void_and_write(self, f, output): + nbre_states = len(list(f['post']['singlestate'])) + print("nb state") + print(nbre_states) + name_state = list(f['post/singlestate/']) + macro_voids = np.zeros((self.nbre_nodes, nbre_states)) + for ijk_instant in range(nbre_states): + res_t = f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/MACRO_VOIDS/ZONE1_set0/erfblock/res'] + macro_voids[:,ijk_instant] = np.array(res_t).squeeze(1) + self.macro_voids = macro_voids + incfile= open(output,"w") + for i in range(self.nbre_nodes): + incfile.write(str(macro_voids[i, -1])) + incfile.write("\n") + + incfile.close() + + + + + def extract_connectivities(self, f): + self.connectivities = np.asarray(f[u'post/constant/connectivities/TETRA4/erfblock/ic']) + self.elem_id = np.asarray(f[u'post/constant/connectivities/TETRA4/erfblock/idele']) + self.nbelem = len(self.elem_id) + + + return None + + def plot_3D_brut(self): + + fig = plt.figure() + ax = fig.add_subplot(111, projection='3d') + + ax.scatter(self.nodes_coord[:,0], self.nodes_coord[:,1], self.nodes_coord[:,2]+self.disp[:,-1], s=10, c = np.linalg.norm(self.disp,axis = 1)) + + ax.axis('equal') + ax.set_xlabel('X') + ax.set_ylabel('Y') + ax.set_zlabel('Z') + + + plt.show() + + return None + + def extract_filling_factor(self,fid_f): + name_state = list(fid_f['post/singlestate/']) + filling_factor = np.zeros((self.nbre_nodes, self.nbre_states)) + for ijk_instant in range(self.nbre_states): + res_t = fid_f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/FILLING_FACTOR/ZONE1_set0/erfblock/res'] + filling_factor[:,ijk_instant] = np.array(res_t).squeeze(1) + self.filling_factor = filling_factor + return None + + def extract_data(self, fid_f, data_type): + name_state = list(fid_f['post/singlestate/']) + data = np.zeros((self.nbre_nodes, len(name_state))) + for ijk_instant in range(len(name_state)): + res_t = fid_f['post/singlestate/'+name_state[ijk_instant]+'/entityresults/NODE/' + str(data_type) + '/ZONE1_set0/erfblock/res'] + data[:,ijk_instant] = np.array(res_t).squeeze(1) + self.data = data + return None + + + + + def save_res(self): + fid_recap = open(self.dir + '\\res_ZF_num.txt', 'w') + res_vec = [self.larg_001, self.larg_05, self.larg_09, self.penetration, self.longueur, self.mid_longueur, self.Tmax_8_4, self.Tmax_2_4, self.Tmax_23, self.Tmax_24_7, self.cooling_time_8_4, self.cooling_time_2_4, self.cooling_time_23, self.cooling_time_24_7, self.T_max_0_5_4, self.T_max_4_2_0, self.T_max_m4_2_0] + np.savetxt(fid_recap, res_vec) + fid_recap.close() + return None + + + def init_vtk(self): + self.hash_table = [] + for i in range(max(self.nodes_id[:])+1): + data = [] + data.append(i) + data.append(-1) + self.hash_table.append(data) + + for i in range(len(self.nodes_id)): + self.hash_table[self.nodes_id[i]][1] = i + fid_f = self.read_erf_file(self.f_file) + fid_c = self.read_erf_file(self.c_file) + fid_d = self.read_erf_file(self.d_file) + + f_nb_step = self.extract_nbre_instants(fid_f) + c_nb_step = self.extract_nbre_instants(fid_c) + d_nb_step = self.extract_nbre_instants(fid_d) + + max_step = max(f_nb_step, c_nb_step, d_nb_step) + for i in range(max_step): + print(i) + self.write_vtk(str(i)) + print("ok") + + def write_vtk(self, step): + incfile= open(self.vtkfilename + "_" + str(step) + ".vtk","w") + incfile.write("# vtk DataFile Version 2.0\n") + incfile.write("shell.vtk, Created by yds\n") + incfile.write("ASCII\n") + incfile.write("DATASET UNSTRUCTURED_GRID\n") + incfile.write("POINTS ") + incfile.write(str(self.nbre_nodes)) + incfile.write(" double\n") + for i in range(self.nbre_nodes): + incfile.write(str(self.nodes_coord[i,0])) + incfile.write(" ") + incfile.write(str(self.nodes_coord[i,1])) + incfile.write(" ") + incfile.write(str(self.nodes_coord[i,2])) + incfile.write("\n") + incfile.write("\n") + incfile.write("CELLS ") + incfile.write(str(self.nbelem)) + incfile.write(" ") + incfile.write(str(5*self.nbelem)) + incfile.write("\n") + for i in range(self.nbelem): + incfile.write("4 ") + incfile.write(str(self.hash_table[self.connectivities[i, 0]][1])) + incfile.write(" ") + incfile.write(str(self.hash_table[self.connectivities[i, 1]][1])) + incfile.write(" ") + incfile.write(str(self.hash_table[self.connectivities[i, 2]][1])) + incfile.write(" ") + incfile.write(str(self.hash_table[self.connectivities[i, 3]][1])) + incfile.write("\n") + incfile.write("\n") + incfile.write("CELL_TYPES ") + incfile.write(str(self.nbelem)) + incfile.write("\n") + for i in range(self.nbelem): + incfile.write("10 ") + incfile.write("\n") + # incfile.write("\n") + # incfile.write("POINT_DATA ") + # incfile.write(str(self.nbre_nodes)) + # incfile.write("\n") + # incfile.write("FIELD FieldData 1") + # incfile.write("\n") + # incfile.write("1_disp_x 1 ") + # incfile.write(str(self.nbre_nodes)) + # incfile.write(" double") + # incfile.write("\n") + # for i in range(self.nbre_nodes): + # if physic == "temperature": + # incfile.write(str(self.temperature_curing[i,int(step)])) + # incfile.write("\n") + # incfile.write("\n") + incfile.close() + + + def add_data_to_vtk(self, type): + fid_f = self.read_erf_file(self.f_file) + fid_c = self.read_erf_file(self.c_file) + fid_d = self.read_erf_file(self.d_file) + + f_nb_step = self.extract_nbre_instants(fid_f) + c_nb_step = self.extract_nbre_instants(fid_c) + d_nb_step = self.extract_nbre_instants(fid_d) + + max_step = max(f_nb_step, c_nb_step, d_nb_step) + + for k in range(len(type)): + + if type[k] == "f_temperature": + self.extract_data(fid_f, 'TEMPERATURE') + if type[k] == "f_porosities": + self.extract_data(fid_f, 'MACRO_VOIDS') + elif type[k] == "c_temperature": + self.extract_data(fid_c, 'TEMPERATURE') + elif type[k] == "f_pressure" : + self.extract_data(fid_f, 'PRESSURE') + elif type[k] == "f_filling_time" : + self.extract_data(fid_f, 'MATERIAL_AGE') + elif type[k] == "f_filling_factor": + self.extract_data(fid_f, 'FILLING_FACTOR') + elif type[k] == "c_alpha" : + self.extract_data(fid_c, 'CURE') + + for i in range(max_step): + if type[k] != "d_disp": + if (k == 0): + incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") + incfile.write("\n") + incfile.write("POINT_DATA ") + incfile.write(str(self.nbre_nodes)) + incfile.write("\n") + incfile.write("FIELD FieldData " + str(len(type))) + incfile.write("\n") + incfile.write(str(type[k]) + " 1 ") + incfile.write(str(self.nbre_nodes)) + incfile.write(" double") + incfile.write("\n") + else: + incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") + incfile.write("\n") + incfile.write(str(type[k]) + " 1 ") + incfile.write(str(self.nbre_nodes)) + incfile.write(" double") + incfile.write("\n") + + for j in range(self.nbre_nodes): + if type[k] == "f_temperature" or type[k] == "c_temperature": + if i < (self.data.shape[1]): + incfile.write(str(self.data[j,int(i)]-273.15)) + incfile.write("\n") + else: + incfile.write(str(self.data[j,-1]-273.15)) + incfile.write("\n") + else: + if i < (self.data.shape[1]): + incfile.write(str(self.data[j,int(i)])) + incfile.write("\n") + else: + incfile.write(str(self.data[j,-1])) + incfile.write("\n") + + + else: + if i < (d_nb_step): + self.extract_disp_node(fid_d, i) + incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") + incfile.write("\n") + incfile.write(str(type[k]) + " 3 ") + incfile.write(str(self.nbre_nodes)) + incfile.write(" double") + incfile.write("\n") + for j in range(self.nbre_nodes): + incfile.write(str(self.disp[j][0])) + incfile.write(" ") + incfile.write(str(self.disp[j][1])) + incfile.write(" ") + incfile.write(str(self.disp[j][2])) + incfile.write("\n") + else: + self.extract_disp_node(fid_d, d_nb_step-1) + incfile= open(self.vtkfilename + "_" + str(i) + ".vtk","a") + incfile.write("\n") + incfile.write(str(type[k]) + " 3 ") + incfile.write(str(self.nbre_nodes)) + incfile.write(" double") + incfile.write("\n") + for j in range(self.nbre_nodes): + incfile.write(str(self.disp[j][0])) + incfile.write(" ") + incfile.write(str(self.disp[j][1])) + incfile.write(" ") + incfile.write(str(self.disp[j][2])) + + incfile.write("\n") + + + incfile.write("\n") + incfile.close() + + + +if (__name__ == "__main__"): + def extract_coord(self, filename): + + self.dir = "." + self.file = filename + fid_Y = self.read_erf_file() + self.extract_coord_node(fid_Y) + self.extract_nbre_instants(fid_Y) + self.close_erf_file(fid_Y) + + + def extract_temperature(self, filename): + self.dir = "." + self.file = filename + fid_Y = self.read_erf_file() + self.extract_temperature(fid_Y) + self.close_erf_file(fid_Y) + + def extract_disp(self, filename): + self.dir = "." + self.file = filename + fid_Y = self.read_erf_file() + self.extract_temperature(fid_Y) + self.extract_disp_node(fid_Y,1) + + + def write_vtk(self): + + #objet_Y.extract_disp_node(fid_Y,1) + #objet_Y.extract_time(fid_Y) + #objet_Y.extract_filling_factor(fid_Y) + #objet_Y.extract_temperature(fid_Y) + #objet_Y.close_erf_file(fid_Y) + #objet_Y.plot_3D_brut() + + for i in range(max(self.nodes_id[:])+1): + data = [] + data.append(i) + data.append(-1) + self.hash_table.append(data) + + for i in range(len(self.nodes_id)): + self.hash_table[self.nodes_id[i]][1] = i + for i in range(self.nbre_states): + print(i) + self.write_vtk(str(i)) + print("ok") + + + +def extract_data_process_filling(inputFilePath, inputFileName, nbStepDist): + objet_Y = results_process() + objet_Y.dir = inputFilePath + objet_Y.file = inputFileName + fid_Y = objet_Y.read_erf_file() + objet_Y.extract_coord_node(fid_Y) + objet_Y.extract_nbre_instants(fid_Y) + objet_Y.extract_disp_node(fid_Y,nbStepDist) + objet_Y.extract_time(fid_Y) + objet_Y.close_erf_file(fid_Y) + #objet_Y.plot_3D_brut() + + return objet_Y.disp + +def extract_num_step_filling(inputFilePath): + objet_Y = results_process() + objet_Y.file = inputFilePath + fid_Y = objet_Y.read_erf_file(objet_Y.file) + objet_Y.extract_nbre_instants(fid_Y) + + return objet_Y.nbre_states + +def extract_num_part(inputFilePath): + objet_Y = results_process() + objet_Y.dir = inputFilePath + objet_Y.file = inputFileName + fid_Y = objet_Y.read_erf_file() + objet_Y.extract_nbre_part(fid_Y) + + return objet_Y.nb_part + diff --git a/PHASES/ESI/utils/write_file_ori.py b/PHASES/ESI/utils/write_file_ori.py index db7596a..ee12f94 100644 --- a/PHASES/ESI/utils/write_file_ori.py +++ b/PHASES/ESI/utils/write_file_ori.py @@ -1,480 +1,480 @@ -import os -def write_settemperature(file, temperature_file, temp_mold_curing): - incfile= open(temperature_file,"r") - if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - inc = 0 - for line in inclines: - lines = line.split(' ') - if inc == 0: - inittemp = lines[1] - inc += 1 - elif inc == 1: - timetoreachmaxtemp = lines[0] - tempresincuring = lines[1] - inc += 1 - elif inc == 2: - timeforcure = lines[0] - - if temp_mold_curing != 'N/A': - tempresincuring = temp_mold_curing - - - - f= open(file,"w") - f.write("# -*- coding: utf-8 -*-\n") - f.write("\"\"\"\n") - f.write("Created on Fri Jan 20 11:48:17 2023\n") - f.write("\n") - f.write("@author: SMO\n") - f.write("\"\"\"\n") - f.write("\n") - f.write("#!/usr/bin/env python\n") - f.write("# -*- coding: UTF-8 -*-\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Session File\n") - f.write("# ESI Group\n") - f.write("# https://www.esi-group.com\n") - f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Product : Visual-Environment 18.0\n") - f.write("# Date : Fri Jan 20 11:41:54 2023\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("null='' \n") - f.write("from VgPoint3 import *\n") - f.write("from VgPoint2 import *\n") - f.write("from VgMatrix import *\n") - f.write("import VScn\n") - f.write("import VGuiUtl\n") - f.write("import VCmdGui\n") - f.write("import VCmd\n") - f.write("import VCmdFramework\n") - f.write("import VistaDb\n") - f.write("NULL=VistaDb.PythonCNULL()\n") - f.write("import VistaDb\n") - f.write("#__________________ VhmCommand BEGIN __________________\n") - f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") - f.write("import VHostManager\n") - f.write("import VE\n") - f.write("import VExpMngr\n") - f.write("#__________________ SessionCommand BEGIN __________________\n") - f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") - f.write("import VToolKit\n") - f.write("#__________________ VEAction BEGIN __________________\n") - f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") - f.write("import VBrowserManager\n") - f.write("import VMaterial\n") - f.write("import VMeshMdlr\n") - f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") - f.write("VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("VE.SetCurrentPage( 1 )\n") - f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") - f.write("import os\n") - f.write("#SMO: read macro directory from temporary file\n") - f.write("Scriptsfolder = os.getcwd()\n") - f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") - f.write("\n") - f.write("line_no = 0\n") - f.write("incfile= open(VariablesList,\"r\")\n") - f.write("if incfile.mode == 'r':\n") - f.write(" inclines = incfile.read().splitlines()\n") - f.write(" incfile.close()\n") - f.write(" for line in inclines:\n") - f.write(" line_no += 1\n") - f.write(" if 'VdbCuringFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" VdbFilePath = linesplit[2]\n") - f.write(" if 'RTMunfFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" L_RTMgUnfFile = linesplit[2]\n") - f.write(" \n") - f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") - f.write("ret=VE.ModelChange( \"M @0\" )\n") - f.write("\n") - f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") - - - f.write("#__________________ BoundaryConditions BEGIN __________________)\n") - f.write("var7=VCmd.Activate( 1, r\"VRTMUtilities.VRTMInterface\", r\"BoundaryConditions\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveBcType\", r\"Temperature\" )\n") - f.write("VCmd.SetGuStringValue( var7, r\"OpeningMode\", r\"CreateSpecificType\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveBcName\", r\"Temperature_1\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ParamValue\", r\"F(t)\" )\n") - f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateCurve\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") - f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") - f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") - f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") - f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") - f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") - f.write("lst1_count,lst1 = VScn.Point2List( \" 0. " + str(inittemp) + " | \\") - f.write("\n") - f.write(str(timetoreachmaxtemp) + " " + str(tempresincuring) + " | \\") - f.write("\n") - f.write(str(timeforcure) + " " + str(tempresincuring) + " | \\") - f.write("\n") - f.write(" \" )" + "\n") - f.write("VCmd.SetPoint2ArrayValue( var7, r\"PropertyTValue\", lst1_count, lst1 )\n") - f.write("VCmd.Accept( var7 )\n") - f.write("VCmd.Quit( var7 )\n") - - f.write("#__________________ UserDefineRegionChild END __________________)\n") - f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") - f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") - f.write("# VE.SetCurrentPage( 1 )\n") - f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("# VE.NewSession( )\n") - - f.close() - - - - - -def write_mapping(file, nbstep): - f= open(file,"w") - f.write("# -*- coding: utf-8 -*-\n") - f.write("\"\"\"\n") - f.write("Created on Fri Jan 20 11:48:17 2023\n") - f.write("\n") - f.write("@author: SMO\n") - f.write("\"\"\"\n") - f.write("\n") - f.write("#!/usr/bin/env python\n") - f.write("# -*- coding: UTF-8 -*-\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Session File\n") - f.write("# ESI Group\n") - f.write("# https://www.esi-group.com\n") - f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Product : Visual-Environment 18.0\n") - f.write("# Date : Fri Jan 20 11:41:54 2023\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("null='' \n") - f.write("from VgPoint3 import *\n") - f.write("from VgPoint2 import *\n") - f.write("from VgMatrix import *\n") - f.write("import VScn\n") - f.write("import VGuiUtl\n") - f.write("import VCmdGui\n") - f.write("import VCmd\n") - f.write("import VCmdFramework\n") - f.write("import VistaDb\n") - f.write("NULL=VistaDb.PythonCNULL()\n") - f.write("import VistaDb\n") - f.write("#__________________ VhmCommand BEGIN __________________\n") - f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") - f.write("import VHostManager\n") - f.write("import VE\n") - f.write("import VExpMngr\n") - f.write("#__________________ SessionCommand BEGIN __________________\n") - f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") - f.write("import VToolKit\n") - f.write("#__________________ VEAction BEGIN __________________\n") - f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") - f.write("import VBrowserManager\n") - f.write("import VMaterial\n") - f.write("import VMeshMdlr\n") - f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") - f.write("VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("VE.SetCurrentPage( 1 )\n") - f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") - f.write("import os\n") - f.write("#SMO: read macro directory from temporary file\n") - f.write("Scriptsfolder = os.getcwd()\n") - f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") - f.write("\n") - f.write("line_no = 0\n") - f.write("incfile= open(VariablesList,\"r\")\n") - f.write("if incfile.mode == 'r':\n") - f.write(" inclines = incfile.read().splitlines()\n") - f.write(" incfile.close()\n") - f.write(" for line in inclines:\n") - f.write(" line_no += 1\n") - f.write(" if 'VdbCuringFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" VdbFilePath = linesplit[2]\n") - f.write(" if 'RTMunfFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" L_RTMgUnfFile = linesplit[2]\n") - f.write(" \n") - f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") - f.write("ret=VE.ModelChange( \"M @0\" )\n") - f.write("\n") - f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") - - - f.write("#__________________ Extract BEGIN __________________)\n") - f.write("var10=VCmd.Activate( 1, r\"VCastUtilities.VCastInterface\", r\"Extract\" )\n") - f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Extract\" )\n") - f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") - f.write("lst1_count,lst1 = VScn.List( \" P ALL \" )\n") - f.write("VCmd.SetObjectArrayValue( var10, r\"Parts\", lst1_count, lst1 )\n") - f.write("VCmd.SetStringValue( var10, r\"ResultFile\", L_RTMgUnfFile )\n") - f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Mapping\" )\n") - f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") - f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") - f.write("VCmd.SetIntValue( var10, r\"Step\", " + str(nbstep) + " )\n") - f.write("ret=VCmd.ExecuteCommand( var10, r\"Mapping\" )\n") - f.write("VCmd.Accept( var10 )\n") - f.write("VCmd.Quit( var10 )\n") - - f.write("#__________________ UserDefineRegionChild END __________________)\n") - f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") - f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") - f.write("# VE.SetCurrentPage( 1 )\n") - f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("# VE.NewSession( )\n") - - f.close() - -def write_ori(file): - #SMO: read macro directory from temporary file\n") - Scriptsfolder = os.getcwd() - VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - line_no = 0 - incfile= open(VariablesList,"r") - if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'Orientation' in line: - linesplit = line.partition('= ') - Orientation = linesplit[2] - - Ply_Ori_dist = Orientation.split('&') - plies = [] - ori = [] - - for i in range(len(Ply_Ori_dist)): - data = Ply_Ori_dist[i] - data_dist = data.split('#') - plies.append(data_dist[0]) - ori.append(data_dist[1]) - - - - f= open(file,"w") - - f.write("# -*- coding: utf-8 -*-\n") - f.write("\"\"\"\n") - f.write("Created on Fri Jan 20 11:48:17 2023\n") - f.write("\n") - f.write("@author: SMO\n") - f.write("\"\"\"\n") - f.write("\n") - f.write("#!/usr/bin/env python\n") - f.write("# -*- coding: UTF-8 -*-\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Session File\n") - f.write("# ESI Group\n") - f.write("# https://www.esi-group.com\n") - f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Product : Visual-Environment 18.0\n") - f.write("# Date : Fri Jan 20 11:41:54 2023\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("null='' \n") - f.write("from VgPoint3 import *\n") - f.write("from VgPoint2 import *\n") - f.write("from VgMatrix import *\n") - f.write("import VScn\n") - f.write("import VGuiUtl\n") - f.write("import VCmdGui\n") - f.write("import VCmd\n") - f.write("import VCmdFramework\n") - f.write("import VistaDb\n") - f.write("NULL=VistaDb.PythonCNULL()\n") - f.write("import VistaDb\n") - f.write("#__________________ VhmCommand BEGIN __________________\n") - f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") - f.write("import VHostManager\n") - f.write("import VE\n") - f.write("import VExpMngr\n") - f.write("#__________________ SessionCommand BEGIN __________________\n") - f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") - f.write("import VToolKit\n") - f.write("#__________________ VEAction BEGIN __________________\n") - f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") - f.write("import VBrowserManager\n") - f.write("import VMaterial\n") - f.write("import VMeshMdlr\n") - f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") - f.write("VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("VE.SetCurrentPage( 1 )\n") - f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") - f.write("import os\n") - f.write("#SMO: read macro directory from temporary file\n") - f.write("Scriptsfolder = os.getcwd()\n") - f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") - f.write("\n") - f.write("line_no = 0\n") - f.write("incfile= open(VariablesList,\"r\")\n") - f.write("if incfile.mode == 'r':\n") - f.write(" inclines = incfile.read().splitlines()\n") - f.write(" incfile.close()\n") - f.write(" for line in inclines:\n") - f.write(" line_no += 1\n") - f.write(" if 'VdbRTMFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" VdbFilePath = linesplit[2]\n") - f.write(" \n") - f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") - f.write("ret=VE.ModelChange( \"M @0\" )\n") - f.write("\n") - f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") - - - for i in range(len(plies)): - f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") - f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") - f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") - f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") - f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") - f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") - f.write("VCmd.Accept( var5 )\n") - f.write("VCmd.Quit( var5 )\n") - - f.write("#__________________ UserDefineRegionChild END __________________)\n") - f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") - f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") - f.write("# VE.SetCurrentPage( 1 )\n") - f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("# VE.NewSession( )\n") - f.close() - - - -def write_ori_dist(file): - #SMO: read macro directory from temporary file\n") - Scriptsfolder = os.getcwd() - VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') - line_no = 0 - incfile= open(VariablesList,"r") - if incfile.mode == 'r': - inclines = incfile.read().splitlines() - incfile.close() - for line in inclines: - line_no += 1 - if 'Orientation' in line: - linesplit = line.partition('= ') - Orientation = linesplit[2] - - Ply_Ori_dist = Orientation.split('&') - plies = [] - ori = [] - - for i in range(len(Ply_Ori_dist)): - data = Ply_Ori_dist[i] - data_dist = data.split('#') - plies.append(data_dist[0]) - ori.append(data_dist[1]) - - - - f= open(file,"w") - - f.write("# -*- coding: utf-8 -*-\n") - f.write("\"\"\"\n") - f.write("Created on Fri Jan 20 11:48:17 2023\n") - f.write("\n") - f.write("@author: SMO\n") - f.write("\"\"\"\n") - f.write("\n") - f.write("#!/usr/bin/env python\n") - f.write("# -*- coding: UTF-8 -*-\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Session File\n") - f.write("# ESI Group\n") - f.write("# https://www.esi-group.com\n") - f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("# Product : Visual-Environment 18.0\n") - f.write("# Date : Fri Jan 20 11:41:54 2023\n") - f.write("#-------------------------------------------------------------------------------\n") - f.write("null='' \n") - f.write("from VgPoint3 import *\n") - f.write("from VgPoint2 import *\n") - f.write("from VgMatrix import *\n") - f.write("import VScn\n") - f.write("import VGuiUtl\n") - f.write("import VCmdGui\n") - f.write("import VCmd\n") - f.write("import VCmdFramework\n") - f.write("import VistaDb\n") - f.write("NULL=VistaDb.PythonCNULL()\n") - f.write("import VistaDb\n") - f.write("#__________________ VhmCommand BEGIN __________________\n") - f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") - f.write("import VHostManager\n") - f.write("import VE\n") - f.write("import VExpMngr\n") - f.write("#__________________ SessionCommand BEGIN __________________\n") - f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") - f.write("import VToolKit\n") - f.write("#__________________ VEAction BEGIN __________________\n") - f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") - f.write("import VBrowserManager\n") - f.write("import VMaterial\n") - f.write("import VMeshMdlr\n") - f.write("ret=VE.ChangeContext( r\"Visual-Distortion\" )\n") - f.write("VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("VE.SetCurrentPage( 1 )\n") - f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") - f.write("import os\n") - f.write("#SMO: read macro directory from temporary file\n") - f.write("Scriptsfolder = os.getcwd()\n") - f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") - f.write("\n") - f.write("line_no = 0\n") - f.write("incfile= open(VariablesList,\"r\")\n") - f.write("if incfile.mode == 'r':\n") - f.write(" inclines = incfile.read().splitlines()\n") - f.write(" incfile.close()\n") - f.write(" for line in inclines:\n") - f.write(" line_no += 1\n") - f.write(" if 'VdbDistortionFilePath' in line:\n") - f.write(" linesplit = line.partition('= ')\n") - f.write(" #Extract Variable name, value and IDnumber identificator\n") - f.write(" VdbFilePath = linesplit[2]\n") - f.write(" \n") - f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") - f.write("ret=VE.ModelChange( \"M @0\" )\n") - f.write("\n") - f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") - - - for i in range(len(plies)): - f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") - f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") - f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") - f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") - f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") - f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") - f.write("VCmd.Accept( var5 )\n") - f.write("VCmd.Quit( var5 )\n") - - f.write("#__________________ UserDefineRegionChild END __________________)\n") - f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") - f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") - f.write("# VE.SetCurrentPage( 1 )\n") - f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") - f.write("# VE.NewSession( )\n") +import os +def write_settemperature(file, temperature_file, temp_mold_curing): + incfile= open(temperature_file,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + inc = 0 + for line in inclines: + lines = line.split(' ') + if inc == 0: + inittemp = lines[1] + inc += 1 + elif inc == 1: + timetoreachmaxtemp = lines[0] + tempresincuring = lines[1] + inc += 1 + elif inc == 2: + timeforcure = lines[0] + + if temp_mold_curing != 'N/A': + tempresincuring = temp_mold_curing + + + + f= open(file,"w") + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbCuringFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" if 'RTMunfFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" L_RTMgUnfFile = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + f.write("#__________________ BoundaryConditions BEGIN __________________)\n") + f.write("var7=VCmd.Activate( 1, r\"VRTMUtilities.VRTMInterface\", r\"BoundaryConditions\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcType\", r\"Temperature\" )\n") + f.write("VCmd.SetGuStringValue( var7, r\"OpeningMode\", r\"CreateSpecificType\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcName\", r\"Temperature_1\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ParamValue\", r\"F(t)\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateCurve\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("lst1_count,lst1 = VScn.Point2List( \" 0. " + str(inittemp) + " | \\") + f.write("\n") + f.write(str(timetoreachmaxtemp) + " " + str(tempresincuring) + " | \\") + f.write("\n") + f.write(str(timeforcure) + " " + str(tempresincuring) + " | \\") + f.write("\n") + f.write(" \" )" + "\n") + f.write("VCmd.SetPoint2ArrayValue( var7, r\"PropertyTValue\", lst1_count, lst1 )\n") + f.write("VCmd.Accept( var7 )\n") + f.write("VCmd.Quit( var7 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + + f.close() + + + + + +def write_mapping(file, nbstep): + f= open(file,"w") + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbCuringFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" if 'RTMunfFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" L_RTMgUnfFile = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + f.write("#__________________ Extract BEGIN __________________)\n") + f.write("var10=VCmd.Activate( 1, r\"VCastUtilities.VCastInterface\", r\"Extract\" )\n") + f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Extract\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("lst1_count,lst1 = VScn.List( \" P ALL \" )\n") + f.write("VCmd.SetObjectArrayValue( var10, r\"Parts\", lst1_count, lst1 )\n") + f.write("VCmd.SetStringValue( var10, r\"ResultFile\", L_RTMgUnfFile )\n") + f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Mapping\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("VCmd.SetIntValue( var10, r\"Step\", " + str(nbstep) + " )\n") + f.write("ret=VCmd.ExecuteCommand( var10, r\"Mapping\" )\n") + f.write("VCmd.Accept( var10 )\n") + f.write("VCmd.Quit( var10 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + + f.close() + +def write_ori(file): + #SMO: read macro directory from temporary file\n") + Scriptsfolder = os.getcwd() + VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + line_no = 0 + incfile= open(VariablesList,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'Orientation' in line: + linesplit = line.partition('= ') + Orientation = linesplit[2] + + Ply_Ori_dist = Orientation.split('&') + plies = [] + ori = [] + + for i in range(len(Ply_Ori_dist)): + data = Ply_Ori_dist[i] + data_dist = data.split('#') + plies.append(data_dist[0]) + ori.append(data_dist[1]) + + + + f= open(file,"w") + + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbRTMFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + for i in range(len(plies)): + f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") + f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") + f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") + f.write("VCmd.Accept( var5 )\n") + f.write("VCmd.Quit( var5 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + f.close() + + + +def write_ori_dist(file): + #SMO: read macro directory from temporary file\n") + Scriptsfolder = os.getcwd() + VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + line_no = 0 + incfile= open(VariablesList,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'Orientation' in line: + linesplit = line.partition('= ') + Orientation = linesplit[2] + + Ply_Ori_dist = Orientation.split('&') + plies = [] + ori = [] + + for i in range(len(Ply_Ori_dist)): + data = Ply_Ori_dist[i] + data_dist = data.split('#') + plies.append(data_dist[0]) + ori.append(data_dist[1]) + + + + f= open(file,"w") + + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-Distortion\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbDistortionFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + for i in range(len(plies)): + f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") + f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") + f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") + f.write("VCmd.Accept( var5 )\n") + f.write("VCmd.Quit( var5 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") f.close() \ No newline at end of file diff --git a/PHASES/ESI/utils/write_file_ori_lperm.py b/PHASES/ESI/utils/write_file_ori_lperm.py new file mode 100755 index 0000000..b5a4d2e --- /dev/null +++ b/PHASES/ESI/utils/write_file_ori_lperm.py @@ -0,0 +1,574 @@ +import os + + +def write_lperm(file): + f= open(file,"w") + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbRTMFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" if 'lpermRTMFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" lpermRTMFilePath = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + f.write("#__________________ ImportExportLocalProperties BEGIN __________________\" )\n") + f.write("var4=VCmd.Activate( 1, r\"VRTMUtilities.VRTMInterface\", r\"ImportExportLocalProperties\" )\n") + f.write("VCmd.SetGuStringValue( var4, r\"ImportFileName\", lpermRTMFilePath )\n") + f.write("ret=VCmd.ExecuteCommand( var4, r\"ImportLocalResults\" )\n") + f.write("#__________________ RtmLayerDesignManager BEGIN __________________\" )\n") + f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.Quit( var5 )\n") + f.write("#__________________ RtmLayerDesignManager END __________________\" )\n") + f.write("#__________________ RtmLayerDesignManager BEGIN __________________\" )\n") + f.write("var6=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.SetGuStringValue( var6, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetGuStringValue( var6, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetIntValue( var6, r\"SelectedRowForAssignment\", 5 )\n") + f.write("VCmd.Quit( var6 )\n") + f.write("#__________________ UserDefineRegionChild END __________________\" )\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.close() + +def write_settemperature(file, temperature_file, temp_mold_curing): + incfile= open(temperature_file,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + inc = 0 + for line in inclines: + lines = line.split(' ') + if inc == 0: + inittemp = lines[1] + inc += 1 + elif inc == 1: + timetoreachmaxtemp = lines[0] + tempresincuring = lines[1] + inc += 1 + elif inc == 2: + timeforcure = lines[0] + + if temp_mold_curing != 'N/A': + tempresincuring = temp_mold_curing + + + + f= open(file,"w") + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbCuringFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" if 'RTMunfFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" L_RTMgUnfFile = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + f.write("#__________________ BoundaryConditions BEGIN __________________)\n") + f.write("var7=VCmd.Activate( 1, r\"VRTMUtilities.VRTMInterface\", r\"BoundaryConditions\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcType\", r\"Temperature\" )\n") + f.write("VCmd.SetGuStringValue( var7, r\"OpeningMode\", r\"CreateSpecificType\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcName\", r\"Temperature_1\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ParamValue\", r\"F(t)\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateCurve\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveBcParam\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("VCmd.SetStringValue( var7, r\"ActiveProperty\", r\"temperatureValue\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyValueUnit\", r\"C\" )\n") + f.write("VCmd.SetStringValue( var7, r\"PropertyFuncUnit\", r\"sec\" )\n") + f.write("ret=VCmd.ExecuteCommand( var7, r\"UpdateParamForUnit\" )\n") + f.write("lst1_count,lst1 = VScn.Point2List( \" 0. " + str(inittemp) + " | \\") + f.write("\n") + f.write(str(timetoreachmaxtemp) + " " + str(tempresincuring) + " | \\") + f.write("\n") + f.write(str(timeforcure) + " " + str(tempresincuring) + " | \\") + f.write("\n") + f.write(" \" )" + "\n") + f.write("VCmd.SetPoint2ArrayValue( var7, r\"PropertyTValue\", lst1_count, lst1 )\n") + f.write("VCmd.Accept( var7 )\n") + f.write("VCmd.Quit( var7 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + + f.close() + + + + + +def write_mapping(file, nbstep): + f= open(file,"w") + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbCuringFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" if 'RTMunfFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" L_RTMgUnfFile = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + f.write("#__________________ Extract BEGIN __________________)\n") + f.write("var10=VCmd.Activate( 1, r\"VCastUtilities.VCastInterface\", r\"Extract\" )\n") + f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Extract\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("lst1_count,lst1 = VScn.List( \" P ALL \" )\n") + f.write("VCmd.SetObjectArrayValue( var10, r\"Parts\", lst1_count, lst1 )\n") + f.write("VCmd.SetStringValue( var10, r\"ResultFile\", L_RTMgUnfFile )\n") + f.write("VCmd.SetStringValue( var10, r\"ExtractMethod\", r\"Mapping\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("VCmd.SetStringValue( var10, r\"StepType\", r\"Step\" )\n") + f.write("VCmd.SetIntValue( var10, r\"Step\", " + str(nbstep) + " )\n") + f.write("ret=VCmd.ExecuteCommand( var10, r\"Mapping\" )\n") + f.write("VCmd.Accept( var10 )\n") + f.write("VCmd.Quit( var10 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + + f.close() + +def write_ori(file): + #SMO: read macro directory from temporary file\n") + Scriptsfolder = os.getcwd() + VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + line_no = 0 + incfile= open(VariablesList,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'Orientation' in line: + linesplit = line.partition('= ') + Orientation = linesplit[2] + + Ply_Ori_dist = Orientation.split('&') + plies = [] + ori = [] + + for i in range(len(Ply_Ori_dist)): + data = Ply_Ori_dist[i] + data_dist = data.split('#') + plies.append(data_dist[0]) + ori.append(data_dist[1]) + + + + f= open(file,"w") + + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-RTM\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbRTMFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + for i in range(len(plies)): + f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") + f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") + f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") + f.write("VCmd.Accept( var5 )\n") + f.write("VCmd.Quit( var5 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + f.close() + + + +def write_ori_dist(file): + #SMO: read macro directory from temporary file\n") + Scriptsfolder = os.getcwd() + VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt') + line_no = 0 + incfile= open(VariablesList,"r") + if incfile.mode == 'r': + inclines = incfile.read().splitlines() + incfile.close() + for line in inclines: + line_no += 1 + if 'Orientation' in line: + linesplit = line.partition('= ') + Orientation = linesplit[2] + + Ply_Ori_dist = Orientation.split('&') + plies = [] + ori = [] + + for i in range(len(Ply_Ori_dist)): + data = Ply_Ori_dist[i] + data_dist = data.split('#') + plies.append(data_dist[0]) + ori.append(data_dist[1]) + + + + f= open(file,"w") + + f.write("# -*- coding: utf-8 -*-\n") + f.write("\"\"\"\n") + f.write("Created on Fri Jan 20 11:48:17 2023\n") + f.write("\n") + f.write("@author: SMO\n") + f.write("\"\"\"\n") + f.write("\n") + f.write("#!/usr/bin/env python\n") + f.write("# -*- coding: UTF-8 -*-\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Session File\n") + f.write("# ESI Group\n") + f.write("# https://www.esi-group.com\n") + f.write("# Copyright (C) ESI Group 2022. All rights reserved.\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("# Product : Visual-Environment 18.0\n") + f.write("# Date : Fri Jan 20 11:41:54 2023\n") + f.write("#-------------------------------------------------------------------------------\n") + f.write("null='' \n") + f.write("from VgPoint3 import *\n") + f.write("from VgPoint2 import *\n") + f.write("from VgMatrix import *\n") + f.write("import VScn\n") + f.write("import VGuiUtl\n") + f.write("import VCmdGui\n") + f.write("import VCmd\n") + f.write("import VCmdFramework\n") + f.write("import VistaDb\n") + f.write("NULL=VistaDb.PythonCNULL()\n") + f.write("import VistaDb\n") + f.write("#__________________ VhmCommand BEGIN __________________\n") + f.write("var1=VCmd.Activate( 1, r\"VHostManagerPlugin.VhmInterface\", r\"VhmCommand\" )\n") + f.write("import VHostManager\n") + f.write("import VE\n") + f.write("import VExpMngr\n") + f.write("#__________________ SessionCommand BEGIN __________________\n") + f.write("var2=VCmd.Activate( 1, r\"VSessionManager.Command\", r\"SessionCommand\" )\n") + f.write("import VToolKit\n") + f.write("#__________________ VEAction BEGIN __________________\n") + f.write("var3=VCmd.Activate( 1, r\"VToolKit.VSectionCutInterface\", r\"VEAction\" )\n") + f.write("import VBrowserManager\n") + f.write("import VMaterial\n") + f.write("import VMeshMdlr\n") + f.write("ret=VE.ChangeContext( r\"Visual-Distortion\" )\n") + f.write("VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("VE.SetCurrentPage( 1 )\n") + f.write("VExpMngr.SetFilesOfType( r\"All\" )\n") + f.write("import os\n") + f.write("#SMO: read macro directory from temporary file\n") + f.write("Scriptsfolder = os.getcwd()\n") + f.write("VariablesList = os.path.join(Scriptsfolder,'VariablesList.txt')\n") + f.write("\n") + f.write("line_no = 0\n") + f.write("incfile= open(VariablesList,\"r\")\n") + f.write("if incfile.mode == 'r':\n") + f.write(" inclines = incfile.read().splitlines()\n") + f.write(" incfile.close()\n") + f.write(" for line in inclines:\n") + f.write(" line_no += 1\n") + f.write(" if 'VdbDistortionFilePath' in line:\n") + f.write(" linesplit = line.partition('= ')\n") + f.write(" #Extract Variable name, value and IDnumber identificator\n") + f.write(" VdbFilePath = linesplit[2]\n") + f.write(" \n") + f.write("ret=VExpMngr.LoadFile(VdbFilePath,0)\n") + f.write("ret=VE.ModelChange( \"M @0\" )\n") + f.write("\n") + f.write("VCmd.SetStringValue( var1, r\"DisplayMode\", r\"Flat and Wireframe\" )\n") + + + for i in range(len(plies)): + f.write("#__________________ RtmLayerDesignManager BEGIN __________________)\n") + f.write("var5=VCmd.Activate( 1, r\"VCompUtils.VCompUtilsCmdInterface\", r\"RtmLayerDesignManager\" )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerLaminateListFlag\", r\"LayerList\" )\n") + f.write("VCmd.SetIntValue( var5, r\"SelectedRowForAssignment\", 4 )\n") + f.write("VCmd.SetGuStringValue( var5, r\"LayerName\", r\"Layer_" + plies[i] + "\" )\n") + f.write("VCmd.SetDoubleValue( var5, r\"LayerAngle\", "+ ori[i] +" )\n") + f.write("VCmd.Accept( var5 )\n") + f.write("VCmd.Quit( var5 )\n") + + f.write("#__________________ UserDefineRegionChild END __________________)\n") + f.write("VExpMngr.ExportFile( VdbFilePath, 0 )\n") + f.write("# ret=VE.ModelDestroy( \"M @0\" )\n") + f.write("# VE.SetCurrentPage( 1 )\n") + f.write("# VE.SetActiveWindow( r\"p1w1\" )\n") + f.write("# VE.NewSession( )\n") + f.close() \ No newline at end of file diff --git a/PHASES/POSTSIMULATION/__pycache__/__init__.cpython-39.pyc b/PHASES/POSTSIMULATION/__pycache__/__init__.cpython-39.pyc old mode 100755 new mode 100644 index cc23e09..2415085 Binary files a/PHASES/POSTSIMULATION/__pycache__/__init__.cpython-39.pyc and b/PHASES/POSTSIMULATION/__pycache__/__init__.cpython-39.pyc differ diff --git a/PHASES/POSTSIMULATION/__pycache__/alya.cpython-39.pyc b/PHASES/POSTSIMULATION/__pycache__/alya.cpython-39.pyc index 4716429..9a32fc6 100644 Binary files a/PHASES/POSTSIMULATION/__pycache__/alya.cpython-39.pyc and b/PHASES/POSTSIMULATION/__pycache__/alya.cpython-39.pyc differ diff --git a/PHASES/POSTSIMULATION/pam_distorsion_postprocess.py b/PHASES/POSTSIMULATION/pam_distorsion_postprocess.py index 64b1d7f..143cd75 100644 --- a/PHASES/POSTSIMULATION/pam_distorsion_postprocess.py +++ b/PHASES/POSTSIMULATION/pam_distorsion_postprocess.py @@ -6,43 +6,49 @@ from pycompss.api.parameter import DIRECTORY_IN from pycompss.api.api import compss_delete_file -def run(line, step, rtm_folder, curing_folder, distorsion_folder, in_file_rtm, in_file_dis,path_out, - file_IN1, file_IN2, prefix, file_OUT1, file_OUT2, clean): +def run(line, step, rtm_folder, curing_folder, distorsion_folder, in_file_rtm, in_file_dis, path_out, + file_IN1, file_IN2, prefix, file_OUT1, file_OUT2, **kwargs): + # + # Create void and disp files + # reduce_erfh5(line,step,rtm_folder,in_file_rtm,distorsion_folder,in_file_dis,path_out) - save_RTM_res(line,distorsion_folder,file_IN1,file_IN2,path_out,prefix,file_OUT1,file_OUT2) - if bool(clean): - compss_delete_file(rtm_folder) - compss_delete_file(curing_folder) - compss_delete_file(distorsion_folder) - - + # + # Save results from PAM-RTM simulation + # + #save_res(line,distorsion_folder,file_IN1,file_IN2,path_out,prefix,file_OUT1,file_OUT2) + return -@task(distorsion_folder = DIRECTORY_IN) -def save_RTM_res(line,distorsion_folder,file_IN1,file_IN2,path_out,prefix,file_OUT1,file_OUT2): #(shutil, os) + +@task(distorsion_folder = DIRECTORY_IN, returns=1) +def save_res(line,distorsion_folder,file_IN1,file_IN2,path_out,prefix,file_OUT1,file_OUT2): if not os.path.exists(path_out): os.makedirs(path_out) + line_number = line[4:] #COPY 1 src_file = os.path.join(distorsion_folder,file_IN1) - dest_file = os.path.join(path_out,prefix +str(line)+file_OUT1) + dest_file = os.path.join(path_out,prefix+str(line_number)+file_OUT1) shutil.copy(src_file, dest_file) #COPY 2 src_file = os.path.join(distorsion_folder,file_IN2) - dest_file = os.path.join(path_out,prefix +str(line)+file_OUT2) + dest_file = os.path.join(path_out,prefix+str(line_number)+file_OUT2) shutil.copy(src_file, dest_file) + return -@task(rtm_folder = DIRECTORY_IN, distorsion_folder = DIRECTORY_IN) +@task(rtm_folder = DIRECTORY_IN, distorsion_folder = DIRECTORY_IN, returns=1) def reduce_erfh5(line,step,rtm_folder,in_file_rtm,distorsion_folder,in_file_dis, path_out): step = int(step) if not os.path.exists(path_out): os.makedirs(path_out) - #VOID + line_number = line[4:] + # VOID f = h5py.File(os.path.join(rtm_folder,in_file_rtm), 'r') name_state = list(f['post/singlestate/']) void = np.array(f["post/singlestate/"+name_state[step]+"/entityresults/NODE/MACRO_VOIDS/ZONE1_set0/erfblock/res"]) - np.savetxt(path_out+"void"+str(line)+".txt",void) - #DISP - f = h5py.File(os.path.join(distorsion_folder,in_file_dis), 'r') - name_state = list(f['post/singlestate/']) - disp = np.array(f["post/singlestate/"+name_state[step]+"/entityresults/NODE/Translational_Displacement/ZONE1_set1/erfblock/res"]) - np.savetxt(path_out+"disp"+str(line)+".csv",disp) + np.savetxt(path_out+"voids-s"+str(line_number)+".txt",void) + # DISP + #f = h5py.File(os.path.join(distorsion_folder,in_file_dis), 'r') + #name_state = list(f['post/singlestate/']) + #disp = np.array(f["post/singlestate/"+name_state[step]+"/entityresults/NODE/Translational_Displacement/ZONE1_set1/erfblock/res"]) + #np.savetxt(path_out+"disp-s"+str(line_number)+".csv",disp) + return diff --git a/PHASES/SAMPLERS/__pycache__/__init__.cpython-39.pyc b/PHASES/SAMPLERS/__pycache__/__init__.cpython-39.pyc old mode 100755 new mode 100644 index 49c5375..12b5d71 Binary files a/PHASES/SAMPLERS/__pycache__/__init__.cpython-39.pyc and b/PHASES/SAMPLERS/__pycache__/__init__.cpython-39.pyc differ diff --git a/PHASES/SIMULATIONS/PAM_DISTORTION.py b/PHASES/SIMULATIONS/PAM_DISTORTION.py index 0e46ac6..588ee1d 100644 --- a/PHASES/SIMULATIONS/PAM_DISTORTION.py +++ b/PHASES/SIMULATIONS/PAM_DISTORTION.py @@ -1,191 +1,191 @@ -# -*- coding: utf-8 -*- -""" -ESI Group -SMO -""" -import os -import shutil -from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API -from PHASES.ESI.utils.write_file_ori import write_ori_dist -from pycompss.api.task import task -from pycompss.api.parameter import * -from pycompss.api.constraint import constraint -from pycompss.api.multinode import multinode - -#@constraint(computing_units="PAM_NP") -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(input_files_folder=DIRECTORY_IN, outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder=DIRECTORY_IN, returns=1) -def run(Curing_base_name, Distortion_Base_Name, input_files_folder, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): - # import socket - # Variables - # Visual will read the variables values from a txt file that is written at the end of this section - if 'tools' in kwargs: - tools = kwargs['tools'] - if tools.lower() in ('y', 'yes', 't', 'true', 'on', '1'): - tools = True - elif tools.lower() in ('n', 'no', 'f', 'false', 'off', '0'): - tools = False - else: - print("Incorrect tools values. Setting to True") - tools = True - - else: - print("Tools not in kwargs. Setting to True") - tools = True - - print('_____________________________________________________________________________________') - print('Starting distortion simulation (', tools,')') - - - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - - mod_files_folder = os.path.join(outputs_files_folder, "mod_macros") - os.makedirs(mod_files_folder) - - display = 0 - # paths - if machine == 'BORLAP020': - DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin' - DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\pamdistortion.bat' - if display == 1: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - elif machine == 'bruclu': - display = 0 - DistortionSolverFolderPath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin' - DistortionSolverFilePath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' - DistortionsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - elif machine == 'HPCBSC': - display = 0 - DistortionSolverFolderPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin' - DistortionSolverFilePath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' - DistortionsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" - elif machine == 'JVNYDS': - DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin' - DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\pamdistortion.bat' - if display == 1: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\WinTail.exe" - elif machine == 'JVNCFT': - DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin' - DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\pamdistortion.bat' - if display == 1: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\WinTail.exe" - - # Fixed variables - SourceDirectory = source_folder - VariablesTxtPath = os.path.join(os.getcwd(), 'VariablesList.txt') - CuringVdbName = Curing_base_name + '.vdb' - DistortionVdbName = Distortion_Base_Name + '.vdb' - DistortionPcName = Distortion_Base_Name + '.pc' - DistortionIncName = Distortion_Base_Name + '.inc' - DistortionOriName = Distortion_Base_Name + '.ori' - Curingbasefolder = input_files_folder - Distortionbasefolder = outputs_files_folder - - VdbCuringFilePath = os.path.join(Curingbasefolder, CuringVdbName) - CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' - CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) - SourceVdbDistortionFilePath = os.path.join(SourceDirectory, DistortionVdbName) - sourcePcDistortionFilePath = os.path.join(SourceDirectory, DistortionPcName) - sourceIncDistortionFilePath = os.path.join(SourceDirectory, DistortionIncName) - sourceOriDistortionFilePath = os.path.join(SourceDirectory, DistortionOriName) - - VdbDistortionFilePath = os.path.join(Distortionbasefolder, DistortionVdbName) - PcDistortionFilePath = os.path.join(Distortionbasefolder, DistortionPcName) - - shutil.copy(SourceVdbDistortionFilePath, outputs_files_folder) - - VariablesDict = {} - MacroDistortionList = [] - - if 'Orientation' in DoE_line: - if str(DoE_line['Orientation']) != '-1': - VariablesDict['Orientation'] = DoE_line['Orientation'] - #%% Start running the DoE - #write for macros - VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath - VariablesDict['VdbDistortionFilePath'] = VdbDistortionFilePath - VariablesDict['SourceFilesPath'] = SourceDirectory - VariablesDict['DistortionSolverFolderPath'] = DistortionSolverFolderPath - VariablesDict['DistortionSolverFilePath'] = DistortionSolverFilePath - VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - - # Default values - VariablesDict['Viscosity'] = 0.2 - - # Write the variables in a txt file. - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - - if 'Orientation' in DoE_line: - if str(DoE_line['Orientation']) != '-1': - ori_file_path = os.path.join(mod_files_folder, '37_DISTMApplyOrientation.py') - write_ori_dist(ori_file_path) - MacroDistortionList.append(ori_file_path) - - MacroDistortionList.append(src_macros_folder + '/' + '37_DistortionSimulationParameters.py') - - #Application initialization - Distortionmodel = Visual_API() - Distortionmodel.FileName = Distortion_Base_Name - Distortionmodel.solverPath = DistortionSolverFilePath - Distortionmodel.solverVEPath = DistortionsolverVEPath - Distortionmodel.basefolder = Distortionbasefolder - Distortionmodel.inputFile = PcDistortionFilePath - Distortionmodel.SourceFilesPath = SourceDirectory - Distortionmodel.VariablesTxtPath = VariablesTxtPath - - if machine == 'BORLAP020'or machine == 'JVNYDS' or machine == 'JVNCFT': - BatFileName = Distortion_Base_Name + '.bat' - else: - BatFileName = Distortion_Base_Name + '.sh' - Distortionmodel.BatFilePath = os.path.join(Distortionbasefolder, BatFileName) - Distortionmodel.DistortionsolverWinTailPath = DistortionsolverWinTailPath - Distortionmodel.simtype = 'DISTORTION' - Distortionmodel.machine = machine - OutputfileName = Distortion_Base_Name + '.out' - Distortionmodel.outputFile = os.path.join(Distortionbasefolder, OutputfileName) - Distortionmodel.display = display - Distortionmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - Distortionmodel.nt = 2 # Number of threads - Distortionmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - Distortionmodel.np = int(np) - Distortionmodel.mpidir = None - # #Execute macros - for elem in MacroDistortionList: - Distortionmodel.LaunchMacro(elem) - - Distortionmodel.LaunchMacro(os.path.join(src_macros_folder,'38_DistortionRun.py')) - - # solve - Distortionmodel.solveStep(runInBackground=False) - if tools: - MacroUnmoldingList = [] - MacroUnmoldingList.append(os.path.join(src_macros_folder,'66_Distortion_unmolding.py')) - MacroUnmoldingList.append(os.path.join(src_macros_folder,'38_DistortionRun.py')) - for elem in MacroUnmoldingList: - Distortionmodel.LaunchMacro(elem) - - # solve - Distortionmodel.solveStep(runInBackground=False) - - return "PAM_DISTORSION finished" - +# -*- coding: utf-8 -*- +""" +ESI Group +SMO +""" +import os +import shutil +from PHASES.AUTOMATION_ML.utils.bbesi_rtm_api import Visual_API +from PHASES.ESI.utils.write_file_ori import write_ori_dist +from pycompss.api.task import task +from pycompss.api.parameter import * +from pycompss.api.constraint import constraint +from pycompss.api.multinode import multinode + +@constraint(computing_units=48) +@multinode(computing_nodes=1) +@task(input_files_folder=DIRECTORY_IN, outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder=DIRECTORY_IN, returns=1) +def run(Curing_base_name, Distortion_Base_Name, input_files_folder, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): + # import socket + # Variables + # Visual will read the variables values from a txt file that is written at the end of this section + if 'tools' in kwargs: + tools = kwargs['tools'] + # if tools.lower() in ('y', 'yes', 't', 'true', 'on', '1'): + # tools = True + # elif tools.lower() in ('n', 'no', 'f', 'false', 'off', '0'): + # tools = False + # else: + # print("Incorrect tools values. Setting to True") + # tools = True + # + else: + print("Tools not in kwargs") + tools = False + + print('_____________________________________________________________________________________') + print('Starting Distortion Simulation (', tools,')') + + + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + #print("Folder '{}' created.".format(outputs_files_folder)) + #else: + #print("Folder '{}' already exists.".format(outputs_files_folder)) + + mod_files_folder = os.path.join(outputs_files_folder, "mod_macros") + os.makedirs(mod_files_folder) + + display = 0 + # paths + if machine == 'BORLAP020': + DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin' + DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\pamdistortion.bat' + if display == 1: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + elif machine == 'bruclu': + display = 0 + DistortionSolverFolderPath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin' + DistortionSolverFilePath = r'/nisprod/ppghome/ppg/dist/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' + DistortionsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + elif machine == 'HPCBSC': + display = 0 + DistortionSolverFolderPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/pamdistortion/2022.5/Linux_x86_64/bin' + DistortionSolverFilePath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/pamdistortion/2022.5/Linux_x86_64/bin/pamdistortion' + DistortionsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\Solver\bin\WinTail.exe" + elif machine == 'JVNYDS': + DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin' + DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\pamdistortion.bat' + if display == 1: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\WinTail.exe" + elif machine == 'JVNCFT': + DistortionSolverFolderPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin' + DistortionSolverFilePath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\pamdistortion.bat' + if display == 1: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + DistortionsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + DistortionsolverWinTailPath = r"C:\Program Files\ESI Group\PAM-COMPOSITES\2022.0\Solver\bin\WinTail.exe" + + # Fixed variables + SourceDirectory = source_folder + VariablesTxtPath = os.path.join(os.getcwd(), 'VariablesList.txt') + CuringVdbName = Curing_base_name + '.vdb' + DistortionVdbName = Distortion_Base_Name + '.vdb' + DistortionPcName = Distortion_Base_Name + '.pc' + DistortionIncName = Distortion_Base_Name + '.inc' + DistortionOriName = Distortion_Base_Name + '.ori' + Curingbasefolder = input_files_folder + Distortionbasefolder = outputs_files_folder + + VdbCuringFilePath = os.path.join(Curingbasefolder, CuringVdbName) + CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' + CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) + SourceVdbDistortionFilePath = os.path.join(SourceDirectory, DistortionVdbName) + sourcePcDistortionFilePath = os.path.join(SourceDirectory, DistortionPcName) + sourceIncDistortionFilePath = os.path.join(SourceDirectory, DistortionIncName) + sourceOriDistortionFilePath = os.path.join(SourceDirectory, DistortionOriName) + + VdbDistortionFilePath = os.path.join(Distortionbasefolder, DistortionVdbName) + PcDistortionFilePath = os.path.join(Distortionbasefolder, DistortionPcName) + + shutil.copy(SourceVdbDistortionFilePath, outputs_files_folder) + + VariablesDict = {} + MacroDistortionList = [] + + if 'Orientation' in DoE_line: + if str(DoE_line['Orientation']) != '-1': + VariablesDict['Orientation'] = DoE_line['Orientation'] + #%% Start running the DoE + #write for macros + VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath + VariablesDict['VdbDistortionFilePath'] = VdbDistortionFilePath + VariablesDict['SourceFilesPath'] = SourceDirectory + VariablesDict['DistortionSolverFolderPath'] = DistortionSolverFolderPath + VariablesDict['DistortionSolverFilePath'] = DistortionSolverFilePath + VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + + # Default values + VariablesDict['Viscosity'] = 0.2 + + # Write the variables in a txt file. + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + + if 'Orientation' in DoE_line: + if str(DoE_line['Orientation']) != '-1': + ori_file_path = os.path.join(mod_files_folder, '37_DISTMApplyOrientation.py') + write_ori_dist(ori_file_path) + MacroDistortionList.append(ori_file_path) + + MacroDistortionList.append(src_macros_folder + '/' + '37_DistortionSimulationParameters.py') + + #Application initialization + Distortionmodel = Visual_API() + Distortionmodel.FileName = Distortion_Base_Name + Distortionmodel.solverPath = DistortionSolverFilePath + Distortionmodel.solverVEPath = DistortionsolverVEPath + Distortionmodel.basefolder = Distortionbasefolder + Distortionmodel.inputFile = PcDistortionFilePath + Distortionmodel.SourceFilesPath = SourceDirectory + Distortionmodel.VariablesTxtPath = VariablesTxtPath + + if machine == 'BORLAP020'or machine == 'JVNYDS' or machine == 'JVNCFT': + BatFileName = Distortion_Base_Name + '.bat' + else: + BatFileName = Distortion_Base_Name + '.sh' + Distortionmodel.BatFilePath = os.path.join(Distortionbasefolder, BatFileName) + Distortionmodel.DistortionsolverWinTailPath = DistortionsolverWinTailPath + Distortionmodel.simtype = 'DISTORTION' + Distortionmodel.machine = machine + OutputfileName = Distortion_Base_Name + '.out' + Distortionmodel.outputFile = os.path.join(Distortionbasefolder, OutputfileName) + Distortionmodel.display = display + Distortionmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + Distortionmodel.nt = 2 # Number of threads + Distortionmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + Distortionmodel.np = int(np) + Distortionmodel.mpidir = None + # Execute macros + for elem in MacroDistortionList: + Distortionmodel.LaunchMacro(elem) + Distortionmodel.LaunchMacro(os.path.join(src_macros_folder,'38_DistortionRun.py')) + + # Solve first step: Distortion + Distortionmodel.solveStep(runInBackground=False) + + # Solve second step: Unmolding + # if tools: + # MacroUnmoldingList = [] + # MacroUnmoldingList.append(os.path.join(src_macros_folder,'66_Distortion_unmolding.py')) + # MacroUnmoldingList.append(os.path.join(src_macros_folder,'38_DistortionRun.py')) + # for elem in MacroUnmoldingList: + # Distortionmodel.LaunchMacro(elem) + + # # Solve + # Distortionmodel.solveStep(runInBackground=False) + + return "PAM_DISTORSION finished" + diff --git a/PHASES/SIMULATIONS/PAM_RTMc.py b/PHASES/SIMULATIONS/PAM_RTMc.py index 9921970..6ab92ec 100644 --- a/PHASES/SIMULATIONS/PAM_RTMc.py +++ b/PHASES/SIMULATIONS/PAM_RTMc.py @@ -1,194 +1,187 @@ -# -*- coding: utf-8 -*- -""" -Created on Wed Jun 28 15:47:58 2023 - -@author: SMO -""" -import os -from PHASES.ESI.utils.bbesi_rtm_api import Visual_API -from pycompss.api.task import task -from pycompss.api.parameter import * -from pycompss.api.constraint import constraint -from pycompss.api.multinode import multinode -from PHASES.ESI.utils.lecture_erf import extract_num_step_filling -from PHASES.ESI.utils.write_file_ori import write_mapping -from PHASES.ESI.utils.write_file_ori import write_settemperature - -import shutil - - -#@constraint(computing_units="PAM_NP") -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(input_files_folder=DIRECTORY_IN, outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder= DIRECTORY_IN, returns=1) -def run(RTM_base_name, Curing_base_name, input_files_folder, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): - print('_____________________________________________________________________________________') - print('Starting curing simulation') - - #Visual will read the variables values from a txt file that is written at the end of this section - - - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - - - - mod_files_folder = os.path.join(outputs_files_folder, "mod_macros") - os.makedirs(mod_files_folder) - - display = 1 - #paths - if machine == 'BORLAP020': - RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - elif machine == 'bruclu': - display = 0 - RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - elif machine == 'HPCBSC': - display = 0 - vsPath = 'gcc' - RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - elif machine == 'JVNYDS': - vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' - RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' - elif machine == 'JVNCFT': - vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' - RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' - - # Fixed variables - SourceDirectory = source_folder - VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) - RTMVdbName = RTM_base_name + '.vdb' - VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) - CuringVdbName = Curing_base_name + '.vdb' - RTMbasefolder = os.path.join(input_files_folder) - Curingbasefolder = os.path.join(outputs_files_folder) - SourceVdbCuringFilePath = os.path.join(SourceDirectory, CuringVdbName) - - VdbCuringFilePath = os.path.join(outputs_files_folder, CuringVdbName) - RTMunfFile = RTM_base_name + 'g.unf' - RTMerfh5File = RTM_base_name + '_RESULT.erfh5' - RTMunfFilesPath = os.path.join(RTMbasefolder, RTMunfFile) - RTMerfh5FilePath = os.path.join(RTMbasefolder, RTMerfh5File) - - CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' - CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) - - resin_kinetics_init_path = os.path.join(SourceDirectory, Curing_base_name + '_resinkinetics.c') - resin_kinetics_copy_path = os.path.join(outputs_files_folder, Curing_base_name + '_resinkinetics.c') - pc_file_init_path = os.path.join(SourceDirectory, Curing_base_name + '.pc') - pc_file_copy_path = os.path.join(outputs_files_folder, Curing_base_name + '.pc') - - - if 'Mold_temperature' in DoE_line: - if str(DoE_line['Mold_temperature']) != '-1': - temp_mold_curing = DoE_line['Mold_temperature'] - else: - temp_mold_curing = 'N/A' - - shutil.copy(resin_kinetics_init_path, resin_kinetics_copy_path) - shutil.copy(pc_file_init_path, pc_file_copy_path) - - nb_step_filling = extract_num_step_filling(RTMerfh5FilePath) - mapping_file_path = os.path.join(mod_files_folder, '22_CuringMappingTempFillFactCureDegree.py') - write_mapping(mapping_file_path, nb_step_filling-2) - - temperature_file_path = os.path.join(source_folder, 'Temperature.txt') - curing_set_temp_file_path = os.path.join(mod_files_folder, '23_CuringSetTemperature.py') - write_settemperature(curing_set_temp_file_path, temperature_file_path,temp_mold_curing) - - MacroCuringList = [os.path.join(src_macros_folder, '21_SetCuringStrategy.py'), - mapping_file_path, - curing_set_temp_file_path, - os.path.join(src_macros_folder, '24_CuringWriteSolverInput.py')] - - - - # Internal info - VariablesDict = {} - VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath - VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath - VariablesDict['RTMSolverPath'] = RTMSolverPath - VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath - VariablesDict['RTMunfFilePath'] = RTMunfFilesPath - VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - VariablesDict['vsPath'] = vsPath - - #Copy files to destination folder - try: - shutil.copy(SourceVdbCuringFilePath, outputs_files_folder) - #print('File ' + SourceVdbCuringFilePath + ' copied to ' + outputs_files_folder) - except: - print('Vdb Curing file path is not at:') - print(' ', SourceVdbCuringFilePath) - # Default values - VariablesDict['Viscosity'] = 0.2 - - # Read Doe - Curing_parameters_list = ['Curing_cycle'] - - # Modified values - - if 'Curing_cycle' in DoE_line: - MacroCuringList.append(os.path.join(src_macros_folder,'23_CuringSetTemperature.py')) - VariablesDict['Curing_cycle'] = DoE_line['Curing_cycle'] - - # PAM-RTM uses its own python instance. A txt file is used to send it the required information - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - - # Curing - # Application initialization - Curingmodel = Visual_API() - Curingmodel.FileName = Curing_base_name - Curingmodel.solverPath = RTMSolverPath - Curingmodel.solverVEPath = RTMsolverVEPath - Curingmodel.vsPath = vsPath - Curingmodel.basefolder = Curingbasefolder - Curingmodel.inputFile = VdbCuringFilePath - Curingmodel.SourceFilesPath = SourceDirectory - Curingmodel.VariablesTxtPath = VariablesTxtPath - Curingmodel.simtype = 'CURING' #'RTM' - Curingmodel.machine = machine - OutputfileName = Curing_base_name + '.out' - Curingmodel.machine = 'CLUSTER' - Curingmodel.outputFile = os.path.join(Curingbasefolder, OutputfileName) - Curingmodel.display = display - Curingmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - Curingmodel.nt = 2 # Number of threads - Curingmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - Curingmodel.np = int(np) - Curingmodel.mpidir = None - - # JEA: Strange I think it is not necessary - #Scriptsfolder = os.getcwd() - #file_path =os.path.join(VariablesTxtPath) - #shutil.copy(file_path, os.path.join(Scriptsfolder,'VariablesList.txt')) - - #Execute macros - for elem in MacroCuringList: - Curingmodel.LaunchMacro(elem) - #solve - - Curingmodel.solveStep(runInBackground=False) - - return "PAM_RTMc finished" +# -*- coding: utf-8 -*- +""" +Created on Wed Jun 28 15:47:58 2023 + +@author: SMO +""" +import os +from PHASES.ESI.utils.bbesi_rtm_api import Visual_API +from pycompss.api.task import task +from pycompss.api.parameter import * +from pycompss.api.constraint import constraint +from pycompss.api.multinode import multinode +from PHASES.ESI.utils.lecture_erf import extract_num_step_filling +from PHASES.ESI.utils.write_file_ori import write_mapping +from PHASES.ESI.utils.write_file_ori import write_settemperature + +import shutil + + +#@constraint(computing_units="PAM_NP") +@constraint(computing_units=48) +@multinode(computing_nodes=1) +@task(input_files_folder=DIRECTORY_IN, outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder= DIRECTORY_IN, returns=1) +def run(RTM_base_name, Curing_base_name, input_files_folder, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): + print('_____________________________________________________________________________________') + print('Starting Curing simulation') + + # Visual will read the variables values from a txt file that is written at the end of this section + + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + #print("Folder '{}' created.".format(outputs_files_folder)) + #else: + #print("Folder '{}' already exists.".format(outputs_files_folder)) + + # Folder for ESI macros + mod_files_folder = os.path.join(outputs_files_folder, "mod_macros") + os.makedirs(mod_files_folder) + + # Machines + display = 1 + if machine == 'BORLAP020': + RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + elif machine == 'bruclu': + display = 0 + RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + elif machine == 'HPCBSC': + display = 0 + vsPath = 'gcc' + RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + elif machine == 'JVNYDS': + vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' + RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' + elif machine == 'JVNCFT': + vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' + RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' + + # Fixed variables + SourceDirectory = source_folder + VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) + RTMVdbName = RTM_base_name + '.vdb' + VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) + CuringVdbName = Curing_base_name + '.vdb' + RTMbasefolder = os.path.join(input_files_folder) + Curingbasefolder = os.path.join(outputs_files_folder) + SourceVdbCuringFilePath = os.path.join(SourceDirectory, CuringVdbName) + + VdbCuringFilePath = os.path.join(outputs_files_folder, CuringVdbName) + RTMunfFile = RTM_base_name + 'g.unf' + RTMerfh5File = RTM_base_name + '_RESULT.erfh5' + RTMunfFilesPath = os.path.join(RTMbasefolder, RTMunfFile) + RTMerfh5FilePath = os.path.join(RTMbasefolder, RTMerfh5File) + + CuringCATGENerfName = Curing_base_name + '_CATGEN.erfh5' + CuringCATGENerfPath = os.path.join(Curingbasefolder, CuringCATGENerfName) + + resin_kinetics_init_path = os.path.join(SourceDirectory, Curing_base_name + '_resinkinetics.c') + resin_kinetics_copy_path = os.path.join(outputs_files_folder, Curing_base_name + '_resinkinetics.c') + pc_file_init_path = os.path.join(SourceDirectory, Curing_base_name + '.pc') + pc_file_copy_path = os.path.join(outputs_files_folder, Curing_base_name + '.pc') + shutil.copy(resin_kinetics_init_path, resin_kinetics_copy_path) + shutil.copy(pc_file_init_path, pc_file_copy_path) # Not used + + if 'Mold_temperature' in DoE_line: + if str(DoE_line['Mold_temperature']) != '-1': + temp_mold_curing = DoE_line['Mold_temperature'] + else: + temp_mold_curing = 'N/A' + + nb_step_filling = extract_num_step_filling(RTMerfh5FilePath) + mapping_file_path = os.path.join(mod_files_folder, '22_CuringMappingTempFillFactCureDegree.py') + write_mapping(mapping_file_path, nb_step_filling-2) + + temperature_file_path = os.path.join(source_folder, 'Temperature.txt') + curing_set_temp_file_path = os.path.join(mod_files_folder, '23_CuringSetTemperature.py') + write_settemperature(curing_set_temp_file_path, temperature_file_path,temp_mold_curing) + + MacroCuringList = [os.path.join(src_macros_folder, '21_SetCuringStrategy.py'), + mapping_file_path, + curing_set_temp_file_path, + os.path.join(src_macros_folder, '24_CuringWriteSolverInput.py')] + + # Internal info + VariablesDict = {} + VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath + VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath + VariablesDict['RTMSolverPath'] = RTMSolverPath + VariablesDict['VdbCuringFilePath'] = VdbCuringFilePath + VariablesDict['RTMunfFilePath'] = RTMunfFilesPath + VariablesDict['CuringCATGENerfPath'] = CuringCATGENerfPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + VariablesDict['vsPath'] = vsPath + + # Copy files to destination folder + try: + shutil.copy(SourceVdbCuringFilePath, outputs_files_folder) + #print('File ' + SourceVdbCuringFilePath + ' copied to ' + outputs_files_folder) + except: + print('ERROR in PAM-CURE: Vdb Curing file path is not at:') + print(' ', SourceVdbCuringFilePath) + # Default values + VariablesDict['Viscosity'] = 0.2 + + # Read Doe + Curing_parameters_list = ['Curing_cycle'] + + # Modified values + if 'Curing_cycle' in DoE_line: + MacroCuringList.append(os.path.join(src_macros_folder,'23_CuringSetTemperature.py')) + VariablesDict['Curing_cycle'] = DoE_line['Curing_cycle'] + + # PAM-RTM uses its own python instance. A txt file is used to send it the required information + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + + # Curing + # Application initialization + Curingmodel = Visual_API() + Curingmodel.FileName = Curing_base_name + Curingmodel.solverPath = RTMSolverPath + Curingmodel.solverVEPath = RTMsolverVEPath + Curingmodel.vsPath = vsPath + Curingmodel.basefolder = Curingbasefolder + Curingmodel.inputFile = VdbCuringFilePath + Curingmodel.SourceFilesPath = SourceDirectory + Curingmodel.VariablesTxtPath = VariablesTxtPath + Curingmodel.simtype = 'CURING' #'RTM' + Curingmodel.machine = machine + OutputfileName = Curing_base_name + '.out' + Curingmodel.machine = 'CLUSTER' + Curingmodel.outputFile = os.path.join(Curingbasefolder, OutputfileName) + Curingmodel.display = display + Curingmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + Curingmodel.nt = 2 # Number of threads + Curingmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + Curingmodel.np = int(np) + Curingmodel.mpidir = None + + # JEA: Strange I think it is not necessary + #Scriptsfolder = os.getcwd() + #file_path =os.path.join(VariablesTxtPath) + #shutil.copy(file_path, os.path.join(Scriptsfolder,'VariablesList.txt')) + + # Execute macros + for elem in MacroCuringList: + Curingmodel.LaunchMacro(elem) + + # Solve + Curingmodel.solveStep(runInBackground=False) + + return "PAM_RTMc finished" diff --git a/PHASES/SIMULATIONS/PAM_RTMf.py b/PHASES/SIMULATIONS/PAM_RTMf.py index 3ea2f9a..1d2d2f0 100644 --- a/PHASES/SIMULATIONS/PAM_RTMf.py +++ b/PHASES/SIMULATIONS/PAM_RTMf.py @@ -1,164 +1,157 @@ -""" -ESI Group -SMO -""" -import os -from PHASES.ESI.utils.bbesi_rtm_api import Visual_API -from pycompss.api.task import task -from pycompss.api.constraint import constraint -from pycompss.api.parameter import * -from pycompss.api.multinode import multinode -import shutil - -#@constraint(computing_units="PAM_NP") -@constraint(computing_units=16) -@multinode(computing_nodes=1) -@task(outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder=DIRECTORY_IN, returns=1) -def run(RTM_base_name, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): - ''' - This function assumes that parameter names and its values are provided in kwargs - The function check if some of the parameter names corresponds to this simulation and - modifies the default value. Then, it launches the simulation - ''' - print('_____________________________________________________________________________________') - print('Starting filling simulation') - - # for item in kwargs: - # print(item) - - # RTM_base_name = 'Lk_RTM_40' - RTM_lperm_file = RTM_base_name + '_modif.lperm' - # Visual will read the variables values from a txt file that is written at the end of this section - - - if not os.path.exists(outputs_files_folder): - os.makedirs(outputs_files_folder) - print("Folder '{}' created.".format(outputs_files_folder)) - else: - print("Folder '{}' already exists.".format(outputs_files_folder)) - - # paths - if machine == 'BORLAP020': - RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' - else: - RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' - elif machine == 'bruclu': - display = 0 - RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - elif machine == 'HPCBSC': - display = 0 - vsPath = 'gcc' - RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' - RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' - - elif machine == 'JVNYDS': - vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' - RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' - elif machine == 'JVNCFT': - RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' - if display == 1: - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' - else : - RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' - - # Fixed variables - SourceDirectory = source_folder - VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) - RTMVdbName = RTM_base_name + '.vdb' - SourceVdbRTMFilePath = os.path.abspath(os.path.join(SourceDirectory, RTMVdbName)) - VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) - lpermfile = os.path.abspath(os.path.join(SourceDirectory, RTM_lperm_file)) - resin_kinetics_init_path = os.path.join(SourceDirectory, RTM_base_name + '_resinkinetics.c') - resin_kinetics_copy_path = os.path.join(outputs_files_folder, RTM_base_name + '_resinkinetics.c') - - MacroRTMList = [] - - # Copy files to destination folder - import shutil - print(100 * '-') - print('Copying to folder {}'.format(outputs_files_folder)) - print(100 * '-') - shutil.copy(SourceVdbRTMFilePath, outputs_files_folder) - shutil.copy(resin_kinetics_init_path, resin_kinetics_copy_path) - - # Internal info - VariablesDict = {} - - VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath - VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath - VariablesDict['RTMSolverPath'] = RTMSolverPath - VariablesDict['outputs_files_folder'] = outputs_files_folder - VariablesDict['lpermfile'] = lpermfile - VariablesDict['vsPath'] = vsPath - - # Default values - VariablesDict['K11'] = 1e-9 - VariablesDict['K22'] = 1.22e-10 - VariablesDict['K33'] = 1.33e-11 - VariablesDict['Shrinkage'] = float(-.01) - VariablesDict['Viscosity'] = 0.2 - VariablesDict['Injection_pressure'] = 500000 - VariablesDict['Injection_temperature'] = 280 - - # Modified values - if 'Injection_pressure' in DoE_line: - if str(DoE_line['Injection_pressure']) != '-1': - MacroRTMList.append(os.path.join(src_macros_folder, '07_RTMApplyPressure.py')) - VariablesDict['Injection_pressure'] = DoE_line['Injection_pressure'] - if 'Injection_temperature' in DoE_line: - if str(DoE_line['Injection_temperature']) != '-1': - MacroRTMList.append(os.path.join(src_macros_folder,'07_RTMApplyTemperature.py')) - VariablesDict['Injection_temperature'] = DoE_line['Injection_temperature'] - if 'Orientation' in DoE_line: - if str(DoE_line['Orientation']) != '-1': - MacroRTMList.append(os.path.join(src_macros_folder,'07_RTMApplyOrientation.py')) - VariablesDict['Orientation'] = DoE_line['Orientation'] - - #RTM_parameters_list = ['Injection_pressure', 'Injection_temperature', 'Injection flow_rate'] - - MacroRTMList.append(os.path.join(src_macros_folder,'08_RTMWriteSolverInput.py')) - - # PAM-RTM uses its own python instance. A txt file is used to send it the required information - # notes: - # variables txt file must be in the same folder as the scripts - f = open(os.path.join(VariablesTxtPath), "w+") - for elem in VariablesDict: - f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") - f.close() - - # %% RTM - # Initialize application class from input data - RTMmodel = Visual_API() - RTMmodel.FileName = RTM_base_name - RTMmodel.SourceFilesPath = SourceDirectory - RTMmodel.solverPath = RTMSolverPath - RTMmodel.solverVEPath = RTMsolverVEPath - RTMmodel.vsPath = vsPath - RTMmodel.basefolder = outputs_files_folder - RTMmodel.RTMbasefolder = outputs_files_folder - RTMmodel.inputFile = VdbRTMFilePath - RTMmodel.VariablesTxtPath = VariablesTxtPath - RTMmodel.simtype = 'RTM' - RTMmodel.machine = machine - OutputfileName = RTM_base_name + '.out' - RTMmodel.outputFile = os.path.join(outputs_files_folder, OutputfileName) - RTMmodel.display = display - RTMmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) - RTMmodel.nt = 2 # Number of threads - RTMmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode - RTMmodel.np = int(np) # Number of processes - RTMmodel.mpidir = None - # Execute macros - for elem in MacroRTMList: - RTMmodel.LaunchMacro(elem) - # Run - RTMmodel.solveStep(runInBackground=False) - - return "PAM_RTMf finished" +""" +ESI Group +SMO +""" +import os +from PHASES.ESI.utils.bbesi_rtm_api import Visual_API +from pycompss.api.task import task +from pycompss.api.constraint import constraint +from pycompss.api.parameter import * +from pycompss.api.multinode import multinode +import shutil + +@constraint(computing_units=48) +@multinode(computing_nodes=1) +@task(outputs_files_folder=DIRECTORY_OUT, source_folder=DIRECTORY_IN, src_macros_folder=DIRECTORY_IN, returns=1) +def run(RTM_base_name, outputs_files_folder, source_folder, src_macros_folder, machine, DoE_line, np, **kwargs): + ''' + This function assumes that parameter names and its values are provided in kwargs + The function check if some of the parameter names corresponds to this simulation and + modifies the default value. Then, it launches the simulation + ''' + print('_____________________________________________________________________________________') + print('Starting Filling Simulation') + + # for item in kwargs: + # print(item) + + # RTM_base_name = 'Lk_RTM_40' + RTM_lperm_file = RTM_base_name + '_modif.lperm' + # Visual will read the variables values from a txt file that is written at the end of this section + + + if not os.path.exists(outputs_files_folder): + os.makedirs(outputs_files_folder) + # print("Folder '{}' created.".format(outputs_files_folder)) + #else: + # print("Folder '{}' already exists.".format(outputs_files_folder)) + + # paths + if machine == 'BORLAP020': + RTMSolverPath = r'C:\Program Files\ESI Group\PAM-COMPOSITES\2022.5\RTMSolver\bin\pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VisualEnvironment.bat' + else: + RTMsolverVEPath = r'C:\Program Files\ESI Group\Visual-Environment\18.0\Windows-x64\VEBatch.bat' + elif machine == 'bruclu': + display = 0 + RTMSolverPath = r'/nisprod/ppghome/ppg/dist/pamcmx/2022.5/Linux_x86_64_2.17/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/nisprod/ppghome/ppg/dist/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + elif machine == 'HPCBSC': + display = 0 + vsPath = 'gcc' + RTMSolverPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/pamrtm/2022.5/Linux_x86_64_2.36/bin/pamcmxdmp.sh' + RTMsolverVEPath = r'/gpfs/projects/bsce81/MN4/bsce81/esi_25/Visual-Environment/18.0/Linux_x86_64_2.17/VEBatch.sh' + + elif machine == 'JVNYDS': + vsPath = r'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat' + RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' + elif machine == 'JVNCFT': + RTMSolverPath = r'C:/Program Files/ESI Group/PAM-COMPOSITES/2022.0/RTMSolver\bin/pamcmxdmp.bat' + if display == 1: + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VisualEnvironment.bat' + else : + RTMsolverVEPath = r'C:/Program Files/ESI Group/Visual-Environment/18.0/Windows-x64/VEBatch.bat' + + # Fixed variables + SourceDirectory = source_folder + VariablesTxtPath = os.path.abspath(os.path.join(os.getcwd(), 'VariablesList.txt')) + RTMVdbName = RTM_base_name + '.vdb' + SourceVdbRTMFilePath = os.path.abspath(os.path.join(SourceDirectory, RTMVdbName)) + VdbRTMFilePath = os.path.abspath(os.path.join(outputs_files_folder, RTMVdbName)) + lpermfile = os.path.abspath(os.path.join(SourceDirectory, RTM_lperm_file)) + resin_kinetics_init_path = os.path.join(SourceDirectory, RTM_base_name + '_resinkinetics.c') + resin_kinetics_copy_path = os.path.join(outputs_files_folder, RTM_base_name + '_resinkinetics.c') + + MacroRTMList = [] + + # Copy files to destination folder + shutil.copy(SourceVdbRTMFilePath, outputs_files_folder) + shutil.copy(resin_kinetics_init_path, resin_kinetics_copy_path) + + # Internal info + VariablesDict = {} + + VariablesDict['VdbRTMFilePath'] = VdbRTMFilePath + VariablesDict['RTMsolverVEPath'] = RTMsolverVEPath + VariablesDict['RTMSolverPath'] = RTMSolverPath + VariablesDict['outputs_files_folder'] = outputs_files_folder + VariablesDict['lpermfile'] = lpermfile + VariablesDict['vsPath'] = vsPath + + # Default values + VariablesDict['K11'] = 1e-9 + VariablesDict['K22'] = 1.22e-10 + VariablesDict['K33'] = 1.33e-11 + VariablesDict['Shrinkage'] = float(-.01) + VariablesDict['Viscosity'] = 0.2 + VariablesDict['Injection_pressure'] = 500000 + VariablesDict['Injection_temperature'] = 280 + + # Modified values + if 'Injection_pressure' in DoE_line: + if str(DoE_line['Injection_pressure']) != '-1': + MacroRTMList.append(os.path.join(src_macros_folder, '07_RTMApplyPressure.py')) + VariablesDict['Injection_pressure'] = DoE_line['Injection_pressure'] + if 'Injection_temperature' in DoE_line: + if str(DoE_line['Injection_temperature']) != '-1': + MacroRTMList.append(os.path.join(src_macros_folder,'07_RTMApplyTemperature.py')) + VariablesDict['Injection_temperature'] = DoE_line['Injection_temperature'] + if 'Orientation' in DoE_line: + if str(DoE_line['Orientation']) != '-1': + MacroRTMList.append(os.path.join(src_macros_folder,'07_RTMApplyOrientation.py')) + VariablesDict['Orientation'] = DoE_line['Orientation'] + + MacroRTMList.append(os.path.join(src_macros_folder,'08_RTMWriteSolverInput.py')) + + # PAM-RTM uses its own python instance. A txt file is used to send it the required information + # notes: + # variables txt file must be in the same folder as the scripts + f = open(os.path.join(VariablesTxtPath), "w+") + for elem in VariablesDict: + f.write(str(elem) + "= " + str(VariablesDict[elem]) + "\n") + f.close() + + # %% RTM + # Initialize application class from input data + RTMmodel = Visual_API() + RTMmodel.FileName = RTM_base_name + RTMmodel.SourceFilesPath = SourceDirectory + RTMmodel.solverPath = RTMSolverPath + RTMmodel.solverVEPath = RTMsolverVEPath + RTMmodel.vsPath = vsPath + RTMmodel.basefolder = outputs_files_folder + RTMmodel.RTMbasefolder = outputs_files_folder + RTMmodel.inputFile = VdbRTMFilePath + RTMmodel.VariablesTxtPath = VariablesTxtPath + RTMmodel.simtype = 'RTM' + RTMmodel.machine = machine + OutputfileName = RTM_base_name + '.out' + RTMmodel.outputFile = os.path.join(outputs_files_folder, OutputfileName) + RTMmodel.display = display + RTMmodel.fp = 1 # Floating point precision (1: SP , 2: DP , note IMPLICIT requires DP) + RTMmodel.nt = 2 # Number of threads + RTMmodel.mp = 1 # 1 (default): SMP parallel mode; 2: DMP parallel mode + RTMmodel.np = int(np) # Number of processes + RTMmodel.mpidir = None + # Execute macros + for elem in MacroRTMList: + RTMmodel.LaunchMacro(elem) + # Run + RTMmodel.solveStep(runInBackground=False) + + return "PAM_RTMf finished" diff --git a/PHASES/SIMULATIONS/__pycache__/__init__.cpython-39.pyc b/PHASES/SIMULATIONS/__pycache__/__init__.cpython-39.pyc old mode 100755 new mode 100644 index 0ce06fa..f7e9f21 Binary files a/PHASES/SIMULATIONS/__pycache__/__init__.cpython-39.pyc and b/PHASES/SIMULATIONS/__pycache__/__init__.cpython-39.pyc differ diff --git a/PHASES/SIMULATIONS/__pycache__/alya.cpython-39.pyc b/PHASES/SIMULATIONS/__pycache__/alya.cpython-39.pyc old mode 100755 new mode 100644 index 98c1d62..005bff8 Binary files a/PHASES/SIMULATIONS/__pycache__/alya.cpython-39.pyc and b/PHASES/SIMULATIONS/__pycache__/alya.cpython-39.pyc differ diff --git a/PHASES/SIMULATIONS/alya.py b/PHASES/SIMULATIONS/alya.py index de34c2f..0042d49 100755 --- a/PHASES/SIMULATIONS/alya.py +++ b/PHASES/SIMULATIONS/alya.py @@ -1,11 +1,12 @@ +import os from pycompss.api.mpi import mpi from pycompss.api.task import task from pycompss.api.parameter import * from pycompss.api.on_failure import on_failure -import os -alya_procs=int(os.environ.get("ALYA_PROCS", "2")) -alya_ppn=int(os.environ.get("ALYA_PPN", "2")) +#machine = os.environ.get("MACHINE", "NORD4") +alya_procs=int(os.environ.get("ALYA_PROCS", "48")) +alya_ppn=int(os.environ.get("ALYA_PPN", "48")) alya_timeout=int(os.environ.get("ALYA_TIMEOUT", "3600")) if alya_procs < alya_ppn: alya_ppn=alya_procs @@ -15,5 +16,3 @@ @task(returns=1, time_out=alya_timeout) def simulation(name_sim, simulation_wdir, **kwargs): return - - diff --git a/PHASES/SIMULATIONS/run_multiple_alya.py b/PHASES/SIMULATIONS/run_multiple_alya.py index 0f697ae..812694b 100644 --- a/PHASES/SIMULATIONS/run_multiple_alya.py +++ b/PHASES/SIMULATIONS/run_multiple_alya.py @@ -4,9 +4,9 @@ from pycompss.api.on_failure import on_failure import os -alya_procs=int(os.environ.get("ALYA_PROCS", "2")) +alya_procs=int(os.environ.get("ALYA_PROCS", "48")) alya_timeout=int(os.environ.get("ALYA_TIMEOUT", "3600")) -alya_ppn=int(os.environ.get("ALYA_PPN", "2")) +alya_ppn=int(os.environ.get("ALYA_PPN", "48")) alya_timeout=int(os.environ.get("ALYA_TIMEOUT", "3600")) if alya_procs < alya_ppn: alya_ppn=alya_procs diff --git a/PHASES/utils/check_license.py b/PHASES/utils/check_license.py new file mode 100644 index 0000000..f9ae09f --- /dev/null +++ b/PHASES/utils/check_license.py @@ -0,0 +1,41 @@ +import subprocess +import time +from datetime import datetime + +def check_license(max_retries=3, retry_delay=30): + + script = "/gpfs/projects/bsce81/check_license_server_new.sh" + + for attempt in range(max_retries): + try: + print(f"{datetime.now()} - License check attempt {attempt + 1}/{max_retries}") + result = subprocess.run( + [script], + capture_output=True, + text=True, + check=True, + timeout=120 # Add timeout to prevent hanging + ) + + if result.returncode == 0: + print(f"{datetime.now()} - License verified successfully") + print(result.stdout) + return True + + print(f"{datetime.now()} - License check failed (attempt {attempt + 1}):") + print(result.stderr) + + except subprocess.TimeoutExpired: + print(f"{datetime.now()} - License check timed out (attempt {attempt + 1})") + + except subprocess.CalledProcessError as e: + print(f"{datetime.now()} - License check failed (attempt {attempt + 1}):") + print(f"Exit code: {e.returncode}") + print(f"Error output: {e.stderr}") + + if attempt < max_retries - 1: + print(f"{datetime.now()} - Waiting {retry_delay} seconds before retry...") + time.sleep(retry_delay) + + print(f"{datetime.now()} - Maximum retries reached. License server unavailable.") + return False diff --git a/PHASES/AUTOMATION_ML/check_license.py b/PHASES/utils/check_license_old.py similarity index 92% rename from PHASES/AUTOMATION_ML/check_license.py rename to PHASES/utils/check_license_old.py index 31ccace..abe972c 100644 --- a/PHASES/AUTOMATION_ML/check_license.py +++ b/PHASES/utils/check_license_old.py @@ -6,7 +6,7 @@ def check_license(): - script = "/gpfs/projects/bsce81/check_license_server.sh" + script = "/gpfs/projects/bsce81/check_license_server_new.sh" try: # Execute the shell script diff --git a/PHASES/utils/phase.py b/PHASES/utils/phase.py index ce441f7..6a05d80 100644 --- a/PHASES/utils/phase.py +++ b/PHASES/utils/phase.py @@ -8,6 +8,14 @@ def run(phase, inputs, outputs, parameters, data_folder, local_vars, **kwargs): phase_function, phase_args = phase_info module_call, function_call = split_string_at_last_dot(phase_function) module = importlib.import_module(module_call) + print("phase: ", phase) + print("") + print("args:", phase_args) + print("") + print("locals:", local_vars) + print("") + print("kwargs:", kwargs) + print("") return getattr(module, function_call)(**phase_args, **kwargs) elif isinstance(phase, list) and len(phase)==1: phase_info = args_values.get_values(phase, inputs, outputs, parameters, data_folder, local_vars) @@ -15,18 +23,27 @@ def run(phase, inputs, outputs, parameters, data_folder, local_vars, **kwargs): phase_args = phase_info.get("arguments") module_call, function_call = split_string_at_last_dot(phase_function) module = importlib.import_module(module_call) + print("phase: ", phase) + print("") + print("args:", phase_args) + print("") + print("locals:", local_vars) + print("") + print("kwargs:", kwargs) + print("") return getattr(module, function_call)(**phase_args, **kwargs) else: values="Start" for p in phase: + print("Executing phase: ", p) + print("") phase_info = args_values.get_values([p], inputs, outputs, parameters, data_folder, local_vars) phase_function = phase_info.get("type") phase_args = phase_info.get("arguments") - print(f"type: {phase_function}, phase_args: {phase_args}") module_call, function_call = split_string_at_last_dot(phase_function) module = importlib.import_module(module_call) - values=getattr(module, function_call)(**phase_args, **kwargs) - print(str(values)) + values = getattr(module, function_call)(**phase_args, **kwargs) + print("values: ", values) return values except Exception as e: raise ValueError(f"An exception occurred: {e}") diff --git a/WORKFLOWS/AUTOMATION_ML/workflow.py b/WORKFLOWS/AUTOMATION_ML/workflow.py deleted file mode 100644 index 52e5619..0000000 --- a/WORKFLOWS/AUTOMATION_ML/workflow.py +++ /dev/null @@ -1,38 +0,0 @@ -import os - -from pycompss.api.api import compss_wait_on -from PHASES.utils import phase -from PHASES.AUTOMATION_ML import check_license -PAM_NP = 1 - -def execution(execution_folder, data_folder, phases, inputs, outputs, parameters): - global PAM_NP - if "PAM_NP" in parameters: - PAM_NP=int(parameters["PAM_NP"]) - print("Setting PAM NP to " + str(PAM_NP)) - df, DoE_names= phase.run(phases.get("Sampling"), inputs, outputs, parameters, data_folder, locals()) - results_folder = execution_folder + "/results/" - if not os.path.isdir(results_folder): - os.makedirs(results_folder) - check_license_run=check_license.check_license() - df = compss_wait_on(df) - DoE_names = compss_wait_on(DoE_names) - if check_license_run: - print("CHECK LICENSE DONE") - a = 0 - for index, row in df.iterrows(): - a += 1 - line_number = 'line' + str(a) - row_folder = os.path.join(results_folder, line_number) - if not os.path.isdir(row_folder): - os.makedirs(row_folder) - DoE_line = dict(zip(DoE_names, row)) - phase.run(phases.get("Simulation"), inputs, outputs, parameters, data_folder, locals()) - if "PostProcess" in phases: - phase.run(phases.get("PostProcess"), inputs, outputs, parameters, data_folder, locals()) - - else: - print("LICENSE IS NOT RUNNING!") - return - - diff --git a/WORKFLOWS/AUTOMATION_ML/workflowA.py b/WORKFLOWS/AUTOMATION_ML/workflowA.py new file mode 100644 index 0000000..e623a0f --- /dev/null +++ b/WORKFLOWS/AUTOMATION_ML/workflowA.py @@ -0,0 +1,47 @@ +import os +import numpy as np + +from PHASES.utils import phase +from PHASES.utils import check_license + +from pycompss.api.api import compss_wait_on +from pycompss.api.task import task +from pycompss.api.parameter import * +PAM_NP = 24 + +def execution(execution_folder, data_folder, phases, inputs, outputs, parameters): + global PAM_NP + import time + if "PAM_NP" in parameters: + PAM_NP=int(parameters["PAM_NP"]) + # + # Sampling and results folder + # + sample_set, DoE_names = phase.run(phases.get("Sampling"), inputs, outputs, parameters, data_folder, locals()) + sample_set = compss_wait_on(sample_set) + DoE_names = compss_wait_on(DoE_names) + results_folder = execution_folder + "/results/" + if not os.path.isdir(results_folder): + os.makedirs(results_folder) + # Check license + check_license_run = check_license.check_license() + if check_license_run: + for index, row in sample_set.iterrows(): + line_number = 'line' + str(index+1) + row_folder = os.path.join(results_folder, line_number) + if not os.path.isdir(row_folder): + os.makedirs(row_folder) + DoE_line = dict(zip(DoE_names, row)) + # + # PAM-COMPOSITES simulations + # + sim_out = phase.run(phases.get("PAM-COMPOSITE_Simulations"), inputs, outputs, parameters, data_folder, locals()) + # + # Postprocess PAM-COMPOSITES simulations + # + if "PAM-COMPOSITE_PostProcess" in phases: + phase.run(phases.get("PAM-COMPOSITE_PostProcess"), inputs, outputs, parameters, data_folder, locals(), out=sim_out) + else: + print("ERROR: PAM-COMPOSITES LICENSE IS NOT RUNNING!") + + return diff --git a/WORKFLOWS/AUTOMATION_ML/workflowB.py b/WORKFLOWS/AUTOMATION_ML/workflowB.py new file mode 100644 index 0000000..6f6fcf1 --- /dev/null +++ b/WORKFLOWS/AUTOMATION_ML/workflowB.py @@ -0,0 +1,57 @@ +import os +import numpy as np + +from PHASES.utils import phase + +from pycompss.api.api import compss_wait_on +from pycompss.api.task import task +from pycompss.api.parameter import * + +def execution(execution_folder, data_folder, phases, inputs, outputs, parameters): + # + # Sampling and results folder + # + sample_set, DoE_names = phase.run(phases.get("Sampling"), inputs, outputs, parameters, data_folder, locals()) + sample_set = compss_wait_on(sample_set) + DoE_names = compss_wait_on(DoE_names) + results_folder = execution_folder + "/results/" + if not os.path.isdir(results_folder): + os.makedirs(results_folder) + # Write input DoE file + write_file(results_folder, sample_set, "xFile.npy") + y = [] + for index, row in sample_set.iterrows(): + line_number = 'line' + str(index+1) + simulation_wdir = os.path.join(execution_folder, "SIMULATIONS") # Simulations wdir Alya + row_folder = os.path.join(results_folder, line_number) + if not os.path.isdir(row_folder): + os.makedirs(row_folder) + DoE_line = dict(zip(DoE_names, row)) + # + # ALYA simulation + # + prepare_out = phase.run(phases.get("Prepare_Data"), inputs, outputs, parameters, data_folder, locals()) + alya_out = phase.run(phases.get("ALYA_Simulation"), inputs, outputs, parameters, data_folder, locals(), out=prepare_out) + # + # Postprocess ALYA simulation + # + if "ALYA_PostProcess" in phases: + new_y = phase.run(phases.get("ALYA_PostProcess"), inputs, outputs, parameters, data_folder, locals(), out=alya_out) + y.append(new_y) + if "ALYA_PostProcess" in phases and "ALYA_PostProcessMerge" in phases: + phase.run(phases.get("ALYA_PostProcessMerge"), inputs, outputs, parameters, data_folder, locals()) + write_file(results_folder, y, "yFile.npy") + return + + +@task(elements=COLLECTION_IN) +def write_file(output_folder, elements, nameFile, **kwargs): + model_file= os.path.join(output_folder, nameFile) + write(model_file, elements) + + +def write(file, element): + with open(file, 'wb') as f3: + np.save(f3, element) + f3.close() + return diff --git a/WORKFLOWS/AUTOMATION_ML/workflowC.py b/WORKFLOWS/AUTOMATION_ML/workflowC.py new file mode 100644 index 0000000..acfc04f --- /dev/null +++ b/WORKFLOWS/AUTOMATION_ML/workflowC.py @@ -0,0 +1,78 @@ +import os +import numpy as np + +from PHASES.utils import phase +from PHASES.utils import check_license + +from pycompss.api.api import compss_wait_on +from pycompss.api.task import task +from pycompss.api.parameter import * +PAM_NP = 24 + +def execution(execution_folder, data_folder, phases, inputs, outputs, parameters): + global PAM_NP + import time + if "PAM_NP" in parameters: + PAM_NP=int(parameters["PAM_NP"]) + # + # Sampling and results folder + # + sample_set, DoE_names = phase.run(phases.get("Sampling"), inputs, outputs, parameters, data_folder, locals()) + sample_set = compss_wait_on(sample_set) + DoE_names = compss_wait_on(DoE_names) + results_folder = execution_folder + "/results/" + if not os.path.isdir(results_folder): + os.makedirs(results_folder) + # Check license + check_license_run = check_license.check_license() + # Write input DoE file + write_file(results_folder, sample_set, "xFile.npy") + if check_license_run: + y = [] + for index, row in sample_set.iterrows(): + line_number = 'line' + str(index+1) + simulation_wdir = os.path.join(execution_folder, "SIMULATIONS") # Simulations wdir Alya + row_folder = os.path.join(results_folder, line_number) + if not os.path.isdir(row_folder): + os.makedirs(row_folder) + DoE_line = dict(zip(DoE_names, row)) + # + # PAM-COMPOSITES simulations + # + sim_out = phase.run(phases.get("PAM-COMPOSITE_Simulations"), inputs, outputs, parameters, data_folder, locals()) + # + # Postprocess PAM-COMPOSITES simulations + # + post_pam = phase.run(phases.get("PAM-COMPOSITE_PostProcess"), inputs, outputs, parameters, data_folder, locals(), out=sim_out) + # + # ALYA simulation + # + if "Prepare_Data" in phases: + prepare_out = phase.run(phases.get("Prepare_Data"), inputs, outputs, parameters, data_folder, locals(), out=post_pam) + if "ALYA_Simulation" in phases: + alya_out = phase.run(phases.get("ALYA_Simulation"), inputs, outputs, parameters, data_folder, locals(), out=prepare_out) + # + # Postprocess ALYA simulation + # + if "ALYA_PostProcess" in phases: + new_y = phase.run(phases.get("ALYA_PostProcess"), inputs, outputs, parameters, data_folder, locals(), out=alya_out) + y.append(new_y) + if "ALYA_PostProcess" in phases and "ALYA_PostProcessMerge" in phases: + phase.run(phases.get("ALYA_PostProcessMerge"), inputs, outputs, parameters, data_folder, locals()) + write_file(results_folder, y, "yFile.npy") + else: + print("ERROR: PAM-COMPOSITES LICENSE IS NOT RUNNING!") + return + + +@task(elements=COLLECTION_IN) +def write_file(output_folder, elements, nameFile, **kwargs): + model_file= os.path.join(output_folder, nameFile) + write(model_file, elements) + + +def write(file, element): + with open(file, 'wb') as f3: + np.save(f3, element) + f3.close() + return diff --git a/WORKFLOWS/RVE/__init__.py b/WORKFLOWS/RVE/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/WORKFLOWS/RVE/workflow.py b/WORKFLOWS/RVE/workflow.py deleted file mode 100644 index 3891f9a..0000000 --- a/WORKFLOWS/RVE/workflow.py +++ /dev/null @@ -1,36 +0,0 @@ -import numpy as np -from PHASES.utils import phase -from pycompss.api.api import compss_wait_on -from pycompss.api.task import task -from pycompss.api.parameter import * -import os - - -def execution(execution_folder, data_folder, phases, inputs, outputs, parameters): - results_folder = execution_folder + "/results/" - if not os.path.isdir(results_folder): - os.makedirs(results_folder) - simulation_folder = execution_folder + "/SIMULATIONS/" - if not os.path.isdir(simulation_folder): - os.makedirs(simulation_folder) - for i in range(parameters.get("n_cases")): - simulation_wdir = simulation_folder + "/SIMULATION-s" + str(i) + "/" - #out_gen_data= phase.run(phases.get("rve_gen"), inputs, outputs, parameters, data_folder, locals()) - out_msh= phase.run(phases.get("rve_mesher"), inputs, outputs, parameters, data_folder, locals()) - out_solver=phase.run(phases.get("rve_solver"), inputs, outputs, parameters, data_folder, locals(), out=out_msh) - sim_out = phase.run(phases.get("sim"), inputs, outputs, parameters, data_folder, locals(), out=out_solver) - #collect_alya_result - return - - -@task(elements=COLLECTION_IN) -def write_file(output_folder, elements, nameFile, **kwargs): - model_file= os.path.join(output_folder, nameFile) - write(model_file, elements) - - -def write(file, element): - with open(file, 'wb') as f3: - np.save(f3, element) - f3.close() - return \ No newline at end of file diff --git a/WORKFLOWS/api.py b/WORKFLOWS/api.py index 71fc03c..3df9571 100755 --- a/WORKFLOWS/api.py +++ b/WORKFLOWS/api.py @@ -11,6 +11,7 @@ def workflow(path, execution_folder, data_folder): data = yaml.load(f, Loader=yaml.FullLoader) workflow_type=data.get("workflow_type") parameters=data.get("parameters") + os.environ["PAM_NP"] = str(parameters.get("PAM_NP", "1")) # Default to 1 if not set inputs=data.get("inputs") outputs = data.get("outputs") phases = data.get("phases") diff --git a/examples/MANUFACTURING_AND_MECHANICAL/execution/run.sh b/examples/MANUFACTURING_AND_MECHANICAL/execution/run.sh new file mode 100755 index 0000000..9d41688 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/execution/run.sh @@ -0,0 +1,53 @@ +# Usage: ./run.sh ogv.yaml test_ogv 1 120 +# Usage: ./run.sh poc1.yaml test_poc1 1 60 + +if [ "$#" -ne 4 ]; then + echo "Illegal number of parameters($#)" + echo "Usage: run.sh " + exit 1 +fi + + +YAML=/gpfs/scratch/bsc21/bsc021946/CAELESTIS/full-workflow/Workflows/examples/MANUFACTURING_AND_MECHANICAL/yamls/$1 +EXEC_NAME=$2 +NUM_NODES=$3 +EXEC_TIME=$4 + +EXECUTION_FOLDER=/gpfs/scratch/bsc21/bsc021946/CAELESTIS/full-workflow/Workflows/examples/MANUFACTURING_AND_MECHANICAL/execution/${EXEC_NAME}/ +mkdir -p $EXECUTION_FOLDER/results/ +QOS=bsc_case +PROJECT=bsc21 +INSTALL_DIR=/gpfs/scratch/bsc21/bsc021946/CAELESTIS/full-workflow/Workflows/ +DATA_DIR=/gpfs/scratch/bsc21/bsc021946/CAELESTIS/full-workflow/data/ +COUPONTOOL=/gpfs/scratch/bsc21/bsc021946/CAELESTIS/full-workflow/COUPONtool + +PAMHOME=/gpfs/projects/bsce81/MN4/bsce81/esi_25 +PAMENV=$PAMHOME/env-`uname` +export PAMHOME PAMENV +if [ -r $PAMENV/psi.Baenv ]; then + . $PAMENV/psi.Baenv +fi + +export ALYA_BIN=/gpfs/projects/bsce81/alya/builds/Alya_no4i.x +export ALYA_PROCS=48 +export ALYA_PPN=48 +export ALYA_TIMEOUT=3600 + +module purge +module load intel/2018.4 +module load impi/2018.4 +module load mkl/2018.4 +module load boost/1.78.0 +module load dislib/master +module load python/3.9.10 + +export COMPSS_MPIRUN_TYPE=impi +export PYTHONPATH=$COUPONTOOL:$PYTHONPATH +export PYTHONPATH=$INSTALL_DIR:$PYTHONPATH + +# shellcheck disable=SC2164 +cd $EXECUTION_FOLDER +enqueue_compss --project_name=$PROJECT --network=ethernet --output_profile=$EXECUTION_FOLDER/time --keep_workingdir --log_dir=$EXECUTION_FOLDER --worker_working_dir=$PWD --scheduler=es.bsc.compss.scheduler.orderstrict.fifo.FifoTS --job_execution_dir=$EXECUTION_FOLDER --qos=$QOS --exec_time=$EXEC_TIME --pythonpath=$PYTHONPATH --num_nodes=$NUM_NODES --worker_in_master_cpus=48 $INSTALL_DIR/WORKFLOWS/api.py $YAML $EXECUTION_FOLDER $DATA_DIR + +echo DONE! + diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA.yaml new file mode 100644 index 0000000..dce274c --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA.yaml @@ -0,0 +1,66 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowA.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" +outputs: {} +inputs: {} +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOEtwolines.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA_400samples.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA_400samples.yaml new file mode 100644 index 0000000..32710eb --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowA_400samples.yaml @@ -0,0 +1,66 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowA.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" +outputs: {} +inputs: {} +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-400samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-400samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-400samples/process_manufacturing + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_neg.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_neg.yaml new file mode 100644 index 0000000..4125ee2 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_neg.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_axial_neg.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_pos.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_pos.yaml new file mode 100644 index 0000000..545b5ab --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_axial_pos.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_axial_pos.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_neg.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_neg.yaml new file mode 100644 index 0000000..5f4225b --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_neg.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_radia_neg.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_pos.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_pos.yaml new file mode 100644 index 0000000..6f1c4ca --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_radia_pos.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_radia_pos.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_neg.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_neg.yaml new file mode 100644 index 0000000..4e3bbf2 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_neg.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_tange_neg.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_pos.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_pos.yaml new file mode 100644 index 0000000..9d0e452 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowB_tange_pos.yaml @@ -0,0 +1,52 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_tange_pos.yaml + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_neg.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_neg.yaml new file mode 100644 index 0000000..5dee466 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_neg.yaml @@ -0,0 +1,104 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOEtwolines.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_axial_neg.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_pos.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_pos.yaml new file mode 100644 index 0000000..c3df08f --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_axial_pos.yaml @@ -0,0 +1,104 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_axial_pos.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_neg.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_neg.yaml new file mode 100644 index 0000000..8d216ba --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_neg.yaml @@ -0,0 +1,104 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_radia_neg.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_pos.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_pos.yaml new file mode 100644 index 0000000..485c4be --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/ogv_workflowC_radia_pos.yaml @@ -0,0 +1,104 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-ogv-14samples/generatedDOE.csv + source_folder: /gpfs/scratch/bsce81/doe-ogv-14samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-ogv-14samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-ogv-14samples/template/template_inputs_USECASEconvert_ogv_radia_pos.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: ogv + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowA.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowA.yaml new file mode 100644 index 0000000..45e0b90 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowA.yaml @@ -0,0 +1,66 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowA.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" +outputs: {} +inputs: {} +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-poc1-11samples/generatedDOEtwolines.csv + source_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/process_manufacturing + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowB.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowB.yaml new file mode 100644 index 0000000..790e449 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowB.yaml @@ -0,0 +1,51 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowB.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + line: "{variables.line_number}" + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-poc1-11samples/generatedDOEtwolines.csv + lperm_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-poc1-11samples/template/template_inputs_USECASEconvert_poc1.yaml + Mechanical_Base_Name: poc1 + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC.yaml new file mode 100644 index 0000000..f04c32a --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC.yaml @@ -0,0 +1,102 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{variables.results_folder}/results/" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-poc1-11samples/generatedDOEtwolines.csv + source_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-poc1-11samples/template/template_inputs_USECASEconvert_poc1.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: poc1 + PAM_NP: 48 diff --git a/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC_dummy.yaml b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC_dummy.yaml new file mode 100644 index 0000000..6e70403 --- /dev/null +++ b/examples/MANUFACTURING_AND_MECHANICAL/yamls/poc1_workflowC_dummy.yaml @@ -0,0 +1,103 @@ +workflow_type: WORKFLOWS.AUTOMATION_ML.workflowC.execution +phases: + Sampling: + - Type: PHASES.SAMPLERS.CSV.run + parameters: + inputs_file: "{parameters.inputs_file}" + PAM-COMPOSITE_Simulations: + - Type: PHASES.SIMULATIONS.PAM_RTMf.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + src_macros_folder: "{parameters.macros_folder}" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + - Type: PHASES.SIMULATIONS.PAM_RTMc.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Curing_base_name: "{parameters.Curing_base_name}" + RTM_base_name: "{parameters.RTM_base_name}" + np: "{parameters.PAM_NP}" + src_macros_folder: "{parameters.macros_folder}" + - Type: PHASES.SIMULATIONS.PAM_DISTORTION.run + parameters: + DoE_line: "{variables.DoE_line}" + outputs_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + machine: "{parameters.machine}" + source_folder: "{parameters.source_folder}" + Distortion_Base_Name: "{parameters.Distortion_Base_Name}" + Curing_base_name: "{parameters.Curing_base_name}" + np: "1" + src_macros_folder: "{parameters.macros_folder}" + tools: "True" + PAM-COMPOSITE_PostProcess: + - Type: PHASES.POSTSIMULATION.pam_distorsion_postprocess.run + parameters: + line: "{variables.line_number}" + step: "-1" + rtm_folder: "{variables.results_folder}/{variables.line_number}/RTM/" + curing_folder: "{variables.results_folder}/{variables.line_number}/Curing/" + distorsion_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + in_file_rtm: "CAELESTIS_RESULT.erfh5" + in_file_dis: "CAELESTISD-STAGE2_RESULT.erfh5" + path_out: "{variables.results_folder}/" + file_IN1: "CAELESTISD-STAGE1_RESULT.erfh5" + file_IN2: "CAELESTISD-STAGE2_RESULT.erfh5" + prefix: "Dist" + file_OUT1: "Step1.erfh5" + file_OUT2: "Step2.erfh5" + Prepare_Data: + - Type: PHASES.BEFORESIMULATION.alya.USECASEconvert_and_surrogate + parameters: + DoE_line: "{variables.DoE_line}" + input_files_folder: "{variables.results_folder}/{variables.line_number}/Distortion/" + output_files_folder: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/" + row_folder: "{variables.simulation_wdir}/{variables.line_number}/" + Mechanical_Base_Name: "{parameters.Mechanical_Base_Name}" + template_COUPONtool: "{parameters.template_COUPONtool}" + lperm_path: "{parameters.lperm_path}" + inp_path: "{parameters.inp_path}" + voids_path: "{parameters.voids_path}" + ALYA_Simulation: + - Type: PHASES.SIMULATIONS.alya.simulation + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcess: + - Type: PHASES.POSTSIMULATION.alya.collect_results + parameters: + simulation_wdir: "{variables.simulation_wdir}/{variables.line_number}/Mechanical/{parameters.Mechanical_Base_Name}" + name_sim: "{parameters.Mechanical_Base_Name}" + ALYA_PostProcessMerge: + - Type: PHASES.POSTSIMULATION.alya.write_results + parameters: + y: "{variables.y}" + alya_output: "{outputs.alya_output}" + results_folder: "{variables.results_folder}" + sample_set: "{variables.sample_set}" +inputs: {} +outputs: + alya_output: + - path: "alya_output.txt" + - overwrite: True +parameters: + machine: HPCBSC + macros_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/esi_src + inputs_file: /gpfs/scratch/bsce81/doe-poc1-11samples/generatedDOEtwolines.csv + source_folder: /gpfs/scratch/bsce81/doe-poc1-11samples/process_manufacturing + lperm_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + inp_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + voids_path: /gpfs/scratch/bsce81/doe-poc1-11samples/mechanical + template_COUPONtool: /gpfs/scratch/bsce81/doe-poc1-11samples/template/template_inputs_USECASEconvert_poc1.yaml + RTM_base_name: CAELESTIS + Curing_base_name: CAELESTIS + Distortion_Base_Name: CAELESTISD + Mechanical_Base_Name: poc1 + PAM_NP: 48