import matplotlib.pyplot as plt
import dolfin
import pulse
from geometry import Geometry, example_meshes


geo = Geometry.from_file(example_meshes['simple_ellipsoid'])

activation = dolfin.Function(dolfin.FunctionSpace(geo.mesh, "R", 0))
activation.assign(dolfin.Constant(0.2))
matparams = pulse.HolzapfelOgden.default_parameters()
material = pulse.HolzapfelOgden(activation=activation,
                                parameters=matparams,
                                f0=geo.f0,
                                s0=geo.s0,
                                n0=geo.n0)

# LV Pressure
lvp = dolfin.Constant(1.0)
lv_marker = geo.markers['ENDO'][0]
lv_pressure = pulse.NeumannBC(traction=lvp,
                              marker=lv_marker, name='lv')
neumann_bc = [lv_pressure]

# Add spring term at the base with stiffness 1.0 kPa/cm^2
base_spring = 1.0
robin_bc = [pulse.RobinBC(value=dolfin.Constant(base_spring),
                          marker=geo.markers["BASE"][0])]


# Fix the basal plane in the longitudinal direction