Source code for tyssue.solvers.isotropic_solver
import logging
import warnings
from scipy import optimize
from ..utils import scaled_unscaled
log = logging.getLogger(name=__name__)
[docs]def bruteforce_isotropic_relax(eptm, geom, model):
def to_minimize(scale):
return scaled_unscaled(model.compute_energy, scale, eptm, geom, args=[eptm])
optim_res = optimize.minimize_scalar(
to_minimize, method="bounded", bounds=[1e-6, 1e2]
)
if optim_res["success"]:
log.info("Scaling by factor {:.3f}".format(optim_res["x"]))
scale = optim_res["x"]
geom.scale(eptm, scale, eptm.coords)
geom.update_all(eptm)
else:
warnings.warn("Optimisation failed")
return optim_res