43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
''' Run a forward simulation.
|
|
Detects FractionalStep and Hyperelasticity from input files.
|
|
'''
|
|
from dolfin import parameters
|
|
import ruamel.yaml as yaml
|
|
import argparse
|
|
import logging
|
|
logging.getLogger().setLevel(logging.INFO)
|
|
|
|
parameters['form_compiler']['optimize'] = True
|
|
parameters['form_compiler']['cpp_optimize'] = True
|
|
parameters['form_compiler']['cpp_optimize_flags'] = ('-O3 -ffast-math '
|
|
'-march=native')
|
|
|
|
def get_forward_solver(inputfile):
|
|
''' Get forward solver from input file '''
|
|
with open(inputfile, 'r') as f:
|
|
options = yaml.load(f)
|
|
|
|
if 'fluid' in options:
|
|
from navierstokes import solver
|
|
elif 'material' in options:
|
|
parameters['form_compiler']['quadrature_degree'] = 6
|
|
from hyperelasticity import solver
|
|
|
|
return solver
|
|
|
|
|
|
def get_parser():
|
|
parser = argparse.ArgumentParser(
|
|
description='Run forward simulation',
|
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parser.add_argument('inputfile', type=str, help='path to YAML input file')
|
|
return parser
|
|
|
|
|
|
if __name__ == '__main__':
|
|
inputfile = get_parser().parse_args().inputfile
|
|
|
|
solver = get_forward_solver(inputfile)
|
|
sol = solver.init(inputfile)
|
|
sol.solve()
|