# create provisory inp modelJob = mdb.Job(model=model_name, name=job_name) modelJob.writeInput(consistencyChecking=OFF) # add imperfections to inp amp_factor = imperfection / previous_model_results['max_disps'][1] text = [ '*IMPERFECTION, FILE={}, STEP=1'.format(previous_model_job_name), '{}, {}'.format(1, amp_factor) ] with open('{}.inp'.format(job_name), 'r') as file: lines = file.readlines() line_cmp = '** {}\n'.format('INTERACTIONS') for i, line in reversed(list(enumerate(lines))): if line == line_cmp: break insert_line = i + 2 for line in reversed(text): lines.insert(insert_line, '{}\n'.format(line)) with open('{}.inp'.format(job_name), 'w') as file: file.writelines(lines) # create job modelJob = mdb.JobFromInputFile(inputFileName='{}.inp'.format(job_name), name=job_name) modelJob.submit(consistencyChecking=OFF) modelJob.waitForCompletion()
cross_section_props = {'area': 1.00004e+01, 'Ixx': 5.24157e+01, 'Iyy': 7.50000e+01, 'J': 2.50000e+02} imperfection = 7.85114e-02 # create, run and post-process linear buckling sim_type = 'lin_buckle' job_info = {'name': 'Simul_{}_{}'.format(model_name, sim_type)} lin_buckle(model_name, job_info['name'], n_longerons, bottom_diameter, top_diameter, pitch, young_modulus, shear_modulus, cross_section_props,) modelJob = mdb.JobFromInputFile(inputFileName='{}.inp'.format(job_info['name']), **job_info) modelJob.submit(consistencyChecking=OFF) modelJob.waitForCompletion() odb_name = '%s.odb' % job_info['name'] odb = session.openOdb(name=odb_name) data_lin_buckle = post_process_lin_buckle(odb) print('\nLinear buckling results') print(data_lin_buckle) # create, run and post-process riks sim_type = 'riks' job_info = {'name': 'Simul_{}_{}'.format(model_name, sim_type)} riks(job_name=job_info['name'], imperfection=imperfection,