def update_p_file(job_dir, inlet_side=None, outlet_side=None, **kwargs): r""" Updates the 0/p file """ # loading files p_file = OpenFoamFile(os.path.join(job_dir, '0', 'p')) u_file = OpenFoamFile(os.path.join(job_dir, '0', 'U')) # setting pressure BCs and modifying velocity BCs if kwargs['inlet_p']: p_val = convert_value(float(kwargs['inlet_p'][0]), kwargs['inlet_p'][1]) p_val = p_val/kwargs['density'][0] p_val = 'uniform {}'.format(p_val) # p_file['boundaryField'][inlet_side]['type'] = 'fixedValue' p_file['boundaryField'][inlet_side]['value'] = p_val # u_file['boundaryField'][inlet_side]['type'] = 'zeroGradient' u_file['boundaryField'][inlet_side].pop('value', None) # if kwargs['outlet_p']: p_val = convert_value(float(kwargs['outlet_p'][0]), kwargs['outlet_p'][1]) p_val = p_val/kwargs['density'][0] p_val = 'uniform {}'.format(p_val) # p_file['boundaryField'][outlet_side]['type'] = 'fixedValue' p_file['boundaryField'][outlet_side]['value'] = p_val # u_file['boundaryField'][outlet_side]['type'] = 'zeroGradient' u_file['boundaryField'][outlet_side].pop('value', None) # p_file.write_foam_file(path=job_dir, overwrite=True) u_file.write_foam_file(path=job_dir, overwrite=True)
def update_transport_props(job_dir, **kwargs): r""" Updates the constant/transportProperties file. Updates the args object to have SI values for density and viscosity. """ # loading file foam_file = os.path.join(job_dir, 'constant', 'transportProperties') foam_file = OpenFoamFile(foam_file) # converting values to SI density = kwargs['density'] density = [convert_value(float(density[0]), density[1]), 'kg/m^3'] # viscosity = kwargs['viscosity'] viscosity = [convert_value(float(viscosity[0]), viscosity[1]), 'pa*s'] # ouputting SI values to global args object args.density = density args.viscosity = viscosity viscosity = viscosity[0]/density[0] # setting kinematic viscosity values fmt = 'nu [ 0 2 -1 0 0 0 0 ] {:0.6e};' foam_file['nu'] = fmt.format(viscosity) # fmt = 'nu0 [ 0 2 -1 0 0 0 0 ] {:0.6e}' foam_file['CrossPowerLawCoeffs']['nu0'] = fmt.format(viscosity) foam_file['BirdCarreauCoeffs']['nu0'] = fmt.format(viscosity) # fmt = 'nuInf [ 0 2 -1 0 0 0 0 ] {:0.6e}' foam_file['CrossPowerLawCoeffs']['nuInf'] = fmt.format(viscosity) foam_file['BirdCarreauCoeffs']['nuInf'] = fmt.format(viscosity) # setting density value fmt = 'rho [ 1 -3 0 0 0 0 0 ] {:0.6e}' foam_file['rho'] = fmt.format(density[0]) foam_file.write_foam_file(path=job_dir, overwrite=True)
def update_system_files(job_dir, **kwargs): r""" Updates the controlDict and decomposeParDict """ # foam_file = OpenFoamFile(os.path.join(job_dir, 'system', 'controlDict')) foam_file['endTime'] = kwargs['end_time'] foam_file.write_foam_file(path=job_dir, overwrite=True) # foam_file = os.path.join(job_dir, 'system', 'decomposeParDict') foam_file = OpenFoamFile(foam_file) foam_file['numberOfSubdomains'] = kwargs['num_cores'] foam_file.write_foam_file(path=job_dir, overwrite=True)
def update_u_file(job_dir, **kwargs): r""" Updates the 0/U file """ aper_map = DataField(kwargs['aper_map']) p_file = OpenFoamFile(os.path.join(job_dir, '0', 'p')) u_file = OpenFoamFile(os.path.join(job_dir, '0', 'U')) inlet_side = kwargs['inlet_side'] outlet_side = kwargs['outlet_side'] vox = kwargs['voxel_size'] avg = kwargs['avg_fact'] # area_dict = { 'left': sum(aper_map.data_map[:, 0] * vox**2 * avg), 'right': sum(aper_map.data_map[:, -1] * vox**2 * avg), 'top': sum(aper_map.data_map[-1, :] * vox**2 * avg), 'bottom': sum(aper_map.data_map[0, :] * vox**2 * avg) } # calculating SI velocities if kwargs['inlet_q']: vel = kwargs['inlet_q'][0:3] vel = [convert_value(float(v), kwargs['inlet_q'][3]) for v in vel] vel = vel/area_dict[inlet_side] vel = 'uniform ({} {} {})'.format(*vel) # u_file['boundaryField'][inlet_side]['type'] = 'fixedValue' u_file['boundaryField'][inlet_side]['value'] = vel # p_file['boundaryField'][inlet_side]['type'] = 'zeroGradient' p_file['boundaryField'][inlet_side].pop('value', None) # if kwargs['outlet_q']: vel = kwargs['outlet_q'][0:3] vel = [convert_value(float(v), kwargs['outlet_q'][3]) for v in vel] vel = vel/area_dict[outlet_side] vel = 'uniform ({} {} {})'.format(*vel) # u_file['boundaryField'][outlet_side]['type'] = 'fixedValue' u_file['boundaryField'][outlet_side]['value'] = vel p_file['boundaryField'][outlet_side]['type'] = 'zeroGradient' p_file['boundaryField'][outlet_side].pop('value', None) # p_file.write_foam_file(path=job_dir, overwrite=True) u_file.write_foam_file(path=job_dir, overwrite=True)