Source code for svcco.sv_interface.build_files

import os
from copy import deepcopy
from .setup import setup as setup_file
from .paths import paths as path_file
from .contour import contour as contour_file
from .geometry import geometry as geometry_file
from .loft import loft as loft_file
from .solid import solid as solid_file
from .mesh import mesh as mesh_file
from .presolver import presolver as presolver_file
from .solver import solver as solver_file
from .centerline import centerline as centerline_file
from .rom import rom as rom_file
from .flow import flow as flow_file

[docs]def build(paths,radii,normals,options,setup_file=setup_file, path_file=path_file,contour_file=contour_file.split("\n"), geometry_file=geometry_file,loft_file=loft_file, solid_file=solid_file,mesh_file=mesh_file, presolver_file=presolver_file,solver_file=solver_file, centerline_file=centerline_file,rom_file=rom_file,flow_file=flow_file): cco_filename = options.filename if options.directory_constructor['create_main_folder']: os.mkdir(options.directory_constructor['main_folder']) cco_file = open(cco_filename,'w+') #setup_file = open(os.path.dirname(__file__)+'/setup.txt','r').read() if options.file_constructor['path']: #path_file = open(os.path.dirname(__file__)+'/paths.txt','r').read() path_file = path_file.format(options.file_constructor['gui']) else: path_file = '' if options.file_constructor['contour']: #contour_file = open(os.path.dirname(__file__)+'/contour.txt','r').readlines() tmp_contour_file = deepcopy(contour_file) tmp_contour_file[8] = tmp_contour_file[8].format(options.file_constructor['gui']) #print(contour_file[8]) for i in range(len(tmp_contour_file)): tmp_contour_file[i] += "\n" else: contour_file = '' if options.file_constructor['solid']: #geometry_file = open(os.path.dirname(__file__)+'/geometry.txt','r').read() #geometry_file = geometry_file.format(options.geometry_options['number_samples'], # options.geometry_options['use_distance_alignment_method']) #loft_file = open(os.path.dirname(__file__)+'/loft.txt','r').read() #loft_file = loft_file.format(options.loft_options['changes'], # options.loft_options['angle']) #solid_file = open(os.path.dirname(__file__)+'/solid.txt','r').read() #solid_file = solid_file.format(options.solid_options['minimum_face_cells'], # options.solid_options['hmin'], # options.solid_options['hmax'], # options.solid_options['face_edge_size'], # options.solid_options['face_edge_size'], # options.solid_options['angle'], # options.file_constructor['gui'], # options.name) loft_file = loft_file solid_file = solid_file.format(options.solid_options['num_caps'],options.solid_options['angle'], options.file_constructor['gui'], options.name) else: geometry_file = '' loft_file = '' solid_file = '' if options.file_constructor['mesh']: #mesh_file = open(os.path.dirname(__file__)+'/mesh.txt','r').read() mesh_file = mesh_file.format(options.mesh_options['global_edge_size'], options.mesh_options['surface_mesh_flag'], options.mesh_options['volume_mesh_flag'], options.mesh_options['no_merge'], options.mesh_options['optimization_level'], options.mesh_options['minimum_dihedral_angle'], options.file_constructor['gui'], options.name, options.name, options.directory_constructor['create_main_folder'], options.directory_constructor['main_folder'], options.directory_constructor['data_folder'], options.directory_constructor['mesh_complete_folder'], options.directory_constructor['mesh_surfaces_folder'], options.directory_constructor['centerline_folder'], options.directory_constructor['mesh_complete_folder'], options.directory_constructor['mesh_complete_folder'], options.directory_constructor['mesh_complete_folder'], options.directory_constructor['mesh_complete_folder'], options.directory_constructor['mesh_surfaces_folder']) #centerline_file = open(os.path.dirname(__file__)+'/centerline.txt','r').read() centerline_file = centerline_file.format(options.directory_constructor['centerline_folder']) else: mesh_files = '' centerline_file = '' #presolver_file = open(os.path.dirname(__file__)+'/presolver.txt','r').read() presolver_file = presolver_file.format(options.directory_constructor['data_folder'], options.presolver_constructor['name'], options.presolver_constructor['fluid_density'], options.presolver_constructor['fluid_viscosity'], options.presolver_constructor['initial_pressure'], options.presolver_constructor['initial_velocity'][0], options.presolver_constructor['initial_velocity'][1], options.presolver_constructor['initial_velocity'][2], options.presolver_constructor['bct_analytical_shape'], options.presolver_constructor['period'], options.presolver_constructor['bct_point_number'], options.presolver_constructor['fourier_mode'], options.presolver_constructor['inflow_file'], options.presolver_constructor['pressures']) #solver_file = open(os.path.dirname(__file__)+'/solver.txt','r').read() solver_file = solver_file.format(options.directory_constructor['data_folder'], options.solver_constructor['name'], options.solver_constructor['fluid_density'], options.solver_constructor['fluid_viscosity'], options.solver_constructor['number_timesteps'], options.solver_constructor['timestep_size'], options.solver_constructor['number_restarts'], options.solver_constructor['number_force_surfaces'], options.solver_constructor['surface_id_force_calc'], options.solver_constructor['force_calc_method'], options.solver_constructor['print_avg_solution'], options.solver_constructor['print_error_indicators'], options.solver_constructor['varying_time_from_file'], options.solver_constructor['step_construction'], options.solver_constructor['distal_resistance'], options.solver_constructor['pressure_coupling'], options.solver_constructor['backflow_stabilization'], options.solver_constructor['residual_control'], options.solver_constructor['residual_criteria'], options.solver_constructor['minimum_req_iter'], options.solver_constructor['svLS_type'], options.solver_constructor['num_krylov'], options.solver_constructor['num_solves_per_left'], options.solver_constructor['tolerance_momentum'], options.solver_constructor['tolerance_continuity'], options.solver_constructor['tolerance_svLS_NS'], options.solver_constructor['max_iter_NS'], options.solver_constructor['max_iter_momentum'], options.solver_constructor['max_iter_continuity'], options.solver_constructor['time_integration_rule'], options.solver_constructor['time_integration_rho'], options.solver_constructor['flow_advection_form'], options.solver_constructor['quadrature_interior'], options.solver_constructor['quadrature_boundary'], options.directory_constructor['data_folder']) flow_file = flow_file.format(options.directory_constructor['data_folder'], options.flow_constructor['inflow_file'], options.directory_constructor['data_folder'], options.flow_constructor['inflow_file'], options.flow_constructor['time'], options.flow_constructor['flow']) rom_files = 'import sv\n' if options.rom_constructor['0D']['create'] or options.rom_constructor['1D']['create']: rom_files += "os.mkdir('{}')\n".format(options.directory_constructor['rom_folder']) if options.rom_constructor['0D']['create']: rom_files += "os.mkdir('{}')\n".format(options.directory_constructor['rom_0D_folder']) rom0D = rom_file.format(options.name, '0D', options.directory_constructor['centerline_folder'], options.directory_constructor['data_folder'], options.rom_constructor['0D']['inflow_file'], options.rom_constructor['0D']['time_step'], options.rom_constructor['0D']['number_time_steps'], options.directory_constructor['rom_0D_folder'], options.rom_constructor['0D']['model_order'], options.rom_constructor['0D']['model_order'], options.directory_constructor['rom_0D_folder'], options.directory_constructor['rom_0D_folder'], options.rom_constructor['0D']['model_order'], options.directory_constructor['rom_0D_folder']) rom_files += rom0D if options.rom_constructor['1D']['create']: rom_files += "os.mkdir('{}')\n".format(options.directory_constructor['rom_1D_folder']) rom1D = rom_file.format(options.name, '1D', options.directory_constructor['centerline_folder'], options.directory_constructor['data_folder'], options.rom_constructor['1D']['inflow_file'], options.rom_constructor['1D']['time_step'], options.rom_constructor['1D']['number_time_steps'], options.directory_constructor['rom_1D_folder'], options.rom_constructor['1D']['model_order'], options.rom_constructor['1D']['model_order'], options.directory_constructor['rom_1D_folder'], options.directory_constructor['rom_1D_folder'], options.rom_constructor['1D']['model_order'], options.directory_constructor['rom_1D_folder']) rom_files += rom1D #postsolver_file = open('postsolver.txt','r').read() ############################################################ # BUILDING SV PATHLINES ############################################################ cco_file_text = '' cco_file_text += setup_file for idx, points in enumerate(paths): cco_file_text += path_file.format(idx,idx,points,idx,idx) ############################################################ ############################################################ ############################################################ # BUILDING SV CONTOURS ############################################################ cco_file_text += tmp_contour_file[0] cco_file_text += tmp_contour_file[1] for idx, path in enumerate(paths): cco_file_text += tmp_contour_file[2].format(idx) cco_file_text += tmp_contour_file[3].format(idx) contours = zip(paths[idx],radii[idx],normals[idx]) for jdx,contour in enumerate(contours): cco_file_text += tmp_contour_file[4].format(idx,contour[1],contour[0],contour[2]) cco_file_text += tmp_contour_file[5].format(idx,idx) cco_file_text += tmp_contour_file[6].format(idx) cco_file_text += tmp_contour_file[7].format(idx) cco_file_text += tmp_contour_file[8] cco_file_text += tmp_contour_file[9].format(idx,idx,idx) ############################################################ ############################################################ ############################################################ # COMPUTING GEOMETRY ############################################################ #cco_file_text += geometry_file ############################################################ ############################################################ ############################################################ # LOFTING CONTOURS ############################################################ cco_file_text += loft_file ############################################################ ############################################################ ############################################################ # BUILDING SV SOLID ############################################################ cco_file_text += solid_file ############################################################ ############################################################ ############################################################ # BUILDING SV MESH ############################################################ cco_file_text += mesh_file ############################################################ ############################################################ ############################################################ # BUILDING SVPRE FILE ############################################################ cco_file_text += presolver_file ############################################################ ############################################################ ############################################################ # BUILDING SOLVER FILE ############################################################ cco_file_text += solver_file ############################################################ ############################################################ # BUILD INFLOW FILES ############################################################ cco_file_text += flow_file ############################################################ ############################################################ # EXTRACT CENTERLINE ############################################################ cco_file_text += centerline_file ############################################################ ############################################################ # BUILDING ROM INPUT FILES ############################################################ cco_file_text += rom_files ############################################################ cco_file.writelines([cco_file_text]) cco_file.close()