Direct conversion of rheological compliance measurements into storage and loss moduli

The procedure that has become established, for obtaining frequency-dependent dynamic moduli from non-oscillatory rheometry, is to fit the experimental data to a particular model (often the generalized Maxwell model is used), and subsequently to calculate the resulting complex viscoelastic modulus, 

G*(w)= G'(w) + i G''(w), 
for that parametrization of the model. 
That procedure can be somewhat restrictive, as it may force the user to approximate their data into the prescribed form, or to use a very large number of fitting parameters. It also artificially hides experimental noise, making the uncertainties in the final results difficult to quantify. Equivalently, one can find an approximate Laplace transform of the time-dependent data, then derive the Laplace transform of the stress relaxation modulus, and subsequently transform from a Laplace to a Fourier description (either numerically or, for certain functional forms, analytically). In either case, the procedure limits the user's freedom in the types of formulae that can easily be fitted and manipulated, and it can be somewhat laborious. Furthermore, in cases where  the experimental data are imperfectly fitted by the pre-conceived functions, or other approximations are introduced (such as an approximate Laplace transform or its inverse), the accuracy of the derived moduli becomes vague. 

A more direct, straightforward and accurate treatment of rheometric data is possible. We have derived a formula for G*(w) in terms of the experimental data points themselves. The figure shows the results (red and blue lines) of substituting data from compliance meaurements of a polyisoprene melt (Mw=152kg/mol, Mw/Mn=1.03), at 0 Celsius, directly into the formula. Data points from much more time-consuming oscillatory measurements are shown for comparison. It can be implemented in just three lines of Mathematica, as follows:

{t,J} = Transpose[Import["filename.txt","Table"]];

G[w_, J0_, eta_, {t_, J_}] := I w /(I w J0 + (1-Exp[-I w t[[1]]])(J[[1]]-J0)/t[[1]] + Exp[-I w t[[Length[t]]] ] / eta + 
  Sum[ (Exp[-I w t[[k-1]]]-Exp[-I w t[[k]]]) (J[[k]]-J[[k-1]])/(t[[k]]-t[[k-1]]), {k,2,Length[t]} ] );

LogLogPlot[ {Re[G[w,0,22151,{t,J}]], Im[G[w,0,22151,{t,J}]]}, {w,0.001,1000} ]

(Some installations of Mathematica first require a library to be loaded, using << Graphics`Graphics` and that LogLogPlot executes with low precision in some versions, so that a linear plot of Log[G[10^s]] versus s (where w=10^s) may produce a better graph.)

The first line imports the experimental data (a list of pairs of numbers) from a file (here named filename.txt). The second line defines the function G, expressing the complex modulus in terms of the data, and the third displays the resulting real and imaginary parts of the complex modulus.

To test the routine, we provide the compliance data published in the paper ( Phys. Rev. E 80, 012501 (2009) ) as a text file containing a list of pairs of numbers (t,J) where t is time measured in seconds and J is compliance in reciprocal Pascals here:ComplianceData.txt. Applying the conversion formula to this file should reproduce the continuous lines in Fig.4 of the paper.

An implementation for MatLab can be downloaded here: moduli.m

An implementation in C can be downloaded here: ComplianceToModuli.c

An implementation for Maple (slightly inelegant, to work around some Maple bugs) can be downloaded as a Maple worksheet: G'&G'' from J.mw or alternatively as plain text: G'&G'' from J.txt

A LabVIEW executable code and accompanying documentation can be dowloaded fromftp://userweb.elec.gla.ac.uk/pub/andrewg/manlio/

For more details, see R M L Evans, Manlio Tassieri, Dietmar Auhl, and Thomas A Waigh, Phys. Rev. E 80, 012501 (2009),

and a discussion of the scientific philosophy behind the data analysis here: BSR Bulletin 50, 76 (2009).

ċ
ComplianceData.txt
(16k)
R M L Evans,
21 Apr 2012, 13:18
ċ
ComplianceToModuli.c
(2k)
R M L Evans,
21 Apr 2012, 13:28
ċ
G_from_J.mw
(66k)
R M L Evans,
21 Apr 2012, 13:18
ċ
G_from_J.txt
(1k)
R M L Evans,
21 Apr 2012, 13:18
ċ
moduli.m
(2k)
R M L Evans,
21 Apr 2012, 13:18