Skip to content
Permalink
Browse files

plugin for the salung function describing the phase separation after …

…a quench into the miscibility gap
  • Loading branch information...
Kohlbrecher committed Aug 9, 2019
1 parent b59336e commit 72b2c0959c866d422f87a7603336b1cb713905e2
BIN +244 Bytes (100%) CHANGES.txt
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -231,7 +231,7 @@ \section{Expectation Maximization (EM)}
\end{align}
with $\lambda^{\max} \simeq 4$ so that $1\leq \lambda^{(k)}\leq \lambda^{\max}$.

Another more efficient method to accelerate the convergence rate of the EM iteration scheme is the so called Anderson acceleration \cite{Anderson1965} to solve fixed point problems (see also \cite{Walker2011,Toth2015}), which also has been suggested for the EM iteration scheme \cite{Henderson2019}. In \SASfit several fixed point accelerations are supplied by making use of the sundials library \cite{Hindmarsh2005}, which supplies next to the Anderson acceleration several other very efficient algorithms to speed up the convergence rate for finding a fixed points like GMRES \cite{Saad1986}, FGMRES \cite{Saad1993}, Bi-CGStab \cite{Vorst1992} or TFQMR \cite{Freund1993}.
Another more efficient method to accelerate the convergence rate of the EM iteration scheme is the so called Anderson acceleration \cite{Anderson1965} to solve fixed point problems (see also \cite{Walker2011,Toth2015}), which also has been suggested for the EM iteration scheme \cite{Henderson2019}. In \SASfit several fixed point accelerations are supplied by making use of the sundials library \cite{Hindmarsh2005}, which supplies next to the Anderson acceleration several other very efficient algorithms to speed up the convergence rate for finding a fixed points like GMRES \cite{Saad1986}, FGMRES \cite{Saad1993}, Bi-CGStab \cite{Vorst1992} or TFQMR \cite{Freund1993}.

In \cite{Biggs1997, Biggs1995} an acceleration process has been suggested basing on vector extrapolation and does not require an extra evaluation of the fixed point operator $\mathcal{O}_\mathrm{EM}$ in eq.\ \ref{eq:LucyRichardsonInversionMethod}. The method just needs to remember one or two previous solution vectors for calculating either the first or additionally the second derivative for guessing the next virtual solution vector, which is then used as an input vector for the next step of the fixed point iteration. The algorithm is described in the algorithm \ref{Biggs_Andersen}.
\begin{algorithm}[thb]
@@ -359,7 +359,7 @@ \section{Linear least square regularization (LLS)}
where $\Delta b_i$ are the experimental errors (standard deviation, Gaussian error or root-mean-square error) of the measured quantities $b_i$.
$\hat{\mathbf{L}}$ describes the penalty contribution and $\lambda$
is the regularization parameter. To determine a suitable value for it automatically several routines are supplied in the \texttt{gsl} library. Several choices for the penalty term $\hat{\mathbf{L}}$ are supplied
In the simples case the penalty term is the identity matrix $\hat{\mathbf{L}} = \hat{\mathbf{I}}$ so that the overall length of the solution vector is also tried to be minimized. As a second choice for the penalty term is the first-order discrete derivative operator \cite{Donatelli2014}
In the simplest case the penalty term is the identity matrix $\hat{\mathbf{L}} = \hat{\mathbf{I}}$ so that the overall length of the solution vector is also tried to be minimized. As a second choice for the penalty term is the first-order discrete derivative operator \cite{Donatelli2014}
\begin{align}\label{eq:first_derivative_penalty}
\hat{\mathbf{L}}_\mathrm{1^{st}} &=
\begin{pmatrix}
@@ -503,9 +503,74 @@ \subsection{Spinodal}

\begin{figure}[htb]
\begin{center}
\includegraphics[width=0.85\textwidth]{spinodalIQ.png}
\end{center}
\caption{} \label{fig:spinodalIQ}
\includegraphics[width=0.65\textwidth]{spinodalIQ.png}
\caption{structure factor of the model \texttt{spinodal} for some selected values of $\gamma$.} \label{fig:phaseseparationIQ}
\end{figure}

\clearpage
\subsection{Phase separation}
\label{sect:phase separation}
~\\

This phenomenological model describing phase separation has been described in Fratzl et al.\ \cite{Fratzl1989}.
They descibe a heuristic "universal" formula for the scaled structure function following
a quench into the miscibility gap which gives very good fits to a variety of experimental observations. The
single adjustable parameter $\gamma$, is needed to fit data for alloys, binary fluids, polymer mixtures and computer
simulation curves, which depends essentially only on the fraction of the volume of the minority phase. Minimizing
the ratio of "surface area to volume" of the minority phase predicts a rough morphology of the system -- its
local character changes from spherical isolated droplets to interconnected plate-like objects as the minority
fraction increases. By relating $\gamma$ to this microstructure they obtain the value of $\gamma$ correctly to within 10%.
The scattering curve $I(q)$ can be approximated by
\begin{align}
\label{eq:spinodal2}
I(x=q/q_\mathrm{max}) = I_\text{max} \frac{ax^4}{x^4+c} \frac{b}{b+\left(x^2-1+d\right)^2}
\end{align}
with
\begin{align}
x &= q/q_\text{max} \\
b &= \frac{4\gamma^2}{\left(1-\gamma^2\right)^2} \left(1-d\right)^2 \\
c &= \frac{d}{b-d(1-d)} \\
a &= (1+c) \left(1+\frac{d^2}{b}\right)
\end{align}
The position of the correlation peak at $q_\text{max}$ contain
information about the size of the structures, which scatter. The value of $d$ seems to
be close to 0.06.
The parameter $\gamma$ can be calculated from the volume fraction of the cluster and depend on their shape

\begin{align}\label{eq:gamma_phi}
\gamma &=
\begin{cases}
\gamma=\left[4\pi\phi(1-\phi)\right]^{-1}, & \mbox{plates, \texttt{model}}=1 \\
\gamma=\left[4\sqrt{\pi\phi}(1-\phi)\right]^{-1}, & \mbox{rods, \texttt{model}}=2 \\
\gamma=\left[2\left(\frac43\pi\right)^{2/3}\phi^{1/3}(1-\phi)\right]^{-1}, & \mbox{spheres, \texttt{model}}=3 \\
\gamma=\gamma, & \mbox{otherwise}.
\end{cases}
\end{align}

\vspace{5mm}

\underline{Input Parameters for model \texttt{phase separation}:}\\
\begin{description}
\item[\texttt{Imax}] scattering intensity at peak position $I_\text{max}$
\item[\texttt{Qmax}] peak maximum $q_\text{max}$
\item[\texttt{gamma/phi}] $\gamma$: a measure for the width of the scaling curve. It can be calculated from the volume fraction $\phi$.
\item[\texttt{d}] $d \approx 0.06$
\item[\texttt{model}] model to calculate $\gamma(phi)$; 1: plates, 2: rods, 3: spheres, otherwise $\gamma$ is input parameter
\end{description}

\underline{Note:}
\begin{itemize}
\item for certain values of $\gamma$ far away from 1 the intensity can become negative. In this case the plugin returns with an error message.
\end{itemize}



\begin{figure}[htb]
\begin{center}
\includegraphics[width=0.65\textwidth]{../images/form_factor/nonparticular/phase_separation.png}
\end{center}
\caption{} \label{fig:phaseseparationIQ}
\end{figure}

\clearpage
@@ -9104,4 +9104,17 @@ @InCollection{Lawson1995a
month = {jan},
}

@Article{Fratzl1989,
author = {P. Fratzl and J.L. Lebowitz},
title = {Universality of scaled structure functions in quenched systems undergoing phase separation},
journal = {Acta Metallurgica},
year = {1989},
volume = {37},
number = {12},
month = {dec},
pages = {3245--3248},
doi = {10.1016/0001-6160(89)90196-x},
publisher = {Elsevier {BV}},
}

@Comment{jabref-meta: databaseType:biblatex;}
@@ -15,6 +15,7 @@ set(SOURCE_${PRJ_NAME}
sasfit_ff_beaucage_exppowlaw_2.c
sasfit_ff_beaucage_exppowlaw.c
sasfit_ff_spinodal.c
sasfit_ff_spinodal2.c
sasfit_ff_debye_anderson_brumberger.c
sasfit_ff_g_dab.c
sasfit_ff_ornstein_zernike.c
@@ -37,7 +37,7 @@
// - description of parameters in HTML table-style

/* ################ start ff_generalized_guinier_porod_law ################ */
/**
/**
* \defgroup ff_generalized_guinier_porod_law generalized Guinier-Porod Law
* \ingroup ff_non-particulate
*
@@ -91,11 +91,11 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_generalized_guinier_porod_law_v(s
/* ################ stop ff_generalized_guinier_porod_law ################ */

/* ################ start ff_extended_guinier_law ################ */
/**
/**
* \defgroup ff_extended_guinier_law extended Guinier law
* \ingroup ff_non-particulate
*
* \brief ((a==0) ? I(Q) = I0 exp(-Ra^2Q^2/3) : I(Q) = a pi/Q^a I0 exp(-Ra^2Q^2/(3-a))); a=0: sphere, a=1: rod, a=2: lamellar
* \brief ((a==0) ? I(Q) = I0 exp(-Ra^2Q^2/3) : I(Q) = a pi/Q^a I0 exp(-Ra^2Q^2/(3-a))); a=0: sphere, a=1: rod, a=2: lamellar
*
* <more detailed documentation, see 'doxygen' docs>
*
@@ -137,7 +137,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_extended_guinier_law_v(scalar q,
/* ################ stop ff_extended_guinier_law ################ */

/* ################ start ff_beaucage_exppowlaw_2 ################ */
/**
/**
* \defgroup ff_beaucage_exppowlaw_2 Beaucage ExpPowLaw 2
* \ingroup ff_non-particulate
*
@@ -192,7 +192,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_beaucage_exppowlaw_2_v(scalar q,
/* ################ stop ff_beaucage_exppowlaw_2 ################ */

/* ################ start ff_beaucage_exppowlaw ################ */
/**
/**
* \defgroup ff_beaucage_exppowlaw Beaucage ExpPowLaw
* \ingroup ff_non-particulate
*
@@ -256,7 +256,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_beaucage_exppowlaw_v(scalar q, sa
/* ################ stop ff_beaucage_exppowlaw ################ */

/* ################ start ff_spinodal ################ */
/**
/**
* \defgroup ff_spinodal Spinodal
* \ingroup ff_non-particulate
*
@@ -301,8 +301,60 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_spinodal_f(scalar q, sasfit_param
sasfit_non_particulate_DLLEXP scalar sasfit_ff_spinodal_v(scalar q, sasfit_param * p, int dist);
/* ################ stop ff_spinodal ################ */

/* ################ start ff_spinodal ################ */
/**
* \defgroup ff_spinodal2 phase separation
* \ingroup ff_non-particulate
*
* \brief \<some brief description of phase separation function\>
*
* <more detailed documentation, see 'doxygen' docs>
*
* \note Default (Size) Distribution: \ref delta
*
* \par Required parameters:
* <table border="0"><tr>
* <td>\b Imax</td>
* <td>scattering intensity at peak position I(Q=Qmax)</td>
* </tr><tr>
* <td>\b Qmax</td>
* <td>position of peak maximum</td>
* </tr><tr>
* <td>\b phi/gamma</td>
* <td>a measure for the width of the scaling curve</td>
* </tr><tr>
* <td>\b d</td>
* <td>d~0.06</td>
* </tr><tr>
* <td>\b model to calculate gamma(phi)</td>
* <td> 1: plates, 2: rods, 3: spheres, otherwise gamma is input parameter </td>
* </tr></table>
*/

/**
* \ingroup ff_spinodal2
*
* \sa sasfit_non_particulate.h, ff_non-particulate
*/
sasfit_non_particulate_DLLEXP scalar sasfit_ff_spinodal2(scalar q, sasfit_param * p);

/**
* \ingroup ff_spinodal2
*
* \sa sasfit_non_particulate.h, ff_non-particulate
*/
sasfit_non_particulate_DLLEXP scalar sasfit_ff_spinodal2_f(scalar q, sasfit_param * p);

/**
* \ingroup ff_spinodal2
*
* \sa sasfit_non_particulate.h, ff_non-particulate
*/
sasfit_non_particulate_DLLEXP scalar sasfit_ff_spinodal2_v(scalar q, sasfit_param * p, int dist);
/* ################ stop ff_spinodal2 ################ */

/* ################ start ff_debye_anderson_brumberger ################ */
/**
/**
* \defgroup ff_debye_anderson_brumberger Debye-Anderson-Brumberger
* \ingroup ff_non-particulate
*
@@ -351,7 +403,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_debye_anderson_brumberger_v(scala
/* ################ stop ff_debye_anderson_brumberger ################ */

/* ################ start ff_g_dab ################ */
/**
/**
* \defgroup ff_g_dab gDAB
* \ingroup ff_non-particulate
*
@@ -400,7 +452,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_g_dab_v(scalar q, sasfit_param *
/* ################ stop ff_g_dab ################ */

/* ################ start ff_ornstein_zernike ################ */
/**
/**
* \defgroup ff_ornstein_zernike Ornstein-Zernike
* \ingroup ff_non-particulate
*
@@ -443,7 +495,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_ornstein_zernike_v(scalar q, sasf
/* ################ stop ff_ornstein_zernike ################ */

/* ################ start ff_broad_peak ################ */
/**
/**
* \defgroup ff_broad_peak Broad-Peak
* \ingroup ff_non-particulate
*
@@ -495,7 +547,7 @@ sasfit_non_particulate_DLLEXP scalar sasfit_ff_broad_peak_v(scalar q, sasfit_par
/* ################ stop ff_broad_peak ################ */

/* ################ start ff_teubner_strey ################ */
/**
/**
* \defgroup ff_teubner_strey Teubner-Strey
* \ingroup ff_non-particulate
*
@@ -7,12 +7,13 @@
#include "include/private.h"

// functions to mark for export
SASFIT_PLUGIN_EXP_BEGIN(10)
SASFIT_PLUGIN_EXP_BEGIN(11)
SASFIT_PLUGIN_EXP_ADD( ff_generalized_guinier_porod_law )
SASFIT_PLUGIN_EXP_ADD( ff_extended_guinier_law )
SASFIT_PLUGIN_EXP_ADD( ff_beaucage_exppowlaw_2 )
SASFIT_PLUGIN_EXP_ADD( ff_beaucage_exppowlaw )
SASFIT_PLUGIN_EXP_ADD( ff_spinodal )
SASFIT_PLUGIN_EXP_ADD( ff_spinodal2 )
SASFIT_PLUGIN_EXP_ADD( ff_debye_anderson_brumberger )
SASFIT_PLUGIN_EXP_ADD( ff_g_dab )
SASFIT_PLUGIN_EXP_ADD( ff_ornstein_zernike )

0 comments on commit 72b2c09

Please sign in to comment.
You can’t perform that action at this time.