001package models;
002
003import org.apache.commons.math3.analysis.UnivariateFunction;
004
005/**
006 * The sinh-Gordon model with coupling \( 0 < B < 2 \). 
007 * 
008 * This model has a rather nontrivial minimal solution, given by an integral expression.
009 * This class uses numerical integration in order to obtain values of \( F_\text{min} \).
010 * The results are cached in order to speed up multiple evaluations.
011 */
012public class SinhGordonModel extends IntegrableModel
013{
014    private CachedFunction fminIpi;
015        
016    /**
017     * Constructs a new sinh-Gordon model with given real coupling constant \( B \in (0,2) \) . 
018     * @param b the coupling constant of the model  
019     */
020    public SinhGordonModel(final double b) {
021
022        UnivariateFunction fminI = new UnivariateFunction() {
023            public double value(double x) {
024                return SinhTools.sinhIntegral(x, b);
025            }
026        };
027       
028        fminIpi = new CachedFunction(fminI, 1e-14);
029    }
030
031    @Override
032    public double FminIpi(double theta) {
033        return fminIpi.value(Math.abs(theta));
034    }
035        
036}