# 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,