diff --git a/pub/doc/Frida.1 b/pub/doc/Frida.1 index 9847d58fdc2175b8b9b4ee67f969af7f0d676dc7..89feb252061f3695cdd8a31dee7633cdb869783d 100644 --- a/pub/doc/Frida.1 +++ b/pub/doc/Frida.1 @@ -1,11 +1,11 @@ .\" Title: frida .\" Author: .\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/> -.\" Date: 02/04/2010 +.\" Date: 02/12/2010 .\" Manual: .\" Source: .\" -.TH "FRIDA" "1" "02/04/2010" "" "" +.TH "FRIDA" "1" "02/12/2010" "" "" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) @@ -17,27 +17,39 @@ Frida \- Fast reliable interactive data analysis .sp \fBfrida2, frida\fR .sp +.SH "NEWS" +The first JCNS School on Data Analysis for Quasielastic Neutron Scattering with FRIDA will take place 28\-29 April 2010 at Garching\&. Register now: http://www\&.jcns\&.info/DataAnalysis2010/ +.sp .SH "DESCRIPTION" -FRIDA is software for scientific data analysis, originally written for inelastic neutron scattering\&. Its data model is quite generic (data files consist of x\-y\-dy tables that are differentiated by z coordinates), so that it can be used for many different kinds of observational data\&. +FRIDA is software for scientific data analysis, primarily written for inelastic neutron scattering\&. Its data model is quite generic (data files consist of x\-y\-dy tables that are differentiated by z coordinates), so that it can be used for many different kinds of observational data\&. +.sp +Frida1, written in FORTRAN, was developed in the 1990s\&. The original name IDA was changed to FRIDA just because there were too many other open\-source projects all called IDA\&. .sp -Frida1, written in FORTRAN, was developped in the 1990s\&. The original name IDA was changed to FRIDA just because there were too many other open\-source projects all called IDA\&. +Frida2 is a rewrite in C++\&. It is the standard tool for data analysis at the backscattering spectrometer SPHERES\&. The more specific routines for time\-of\-flight spectroscopy are currently being ported from Frida1 to Frida2, so that Frida1 can be phased out by mid\-2010\&. .sp -Frida2 is written in C++\&. It is being actively developed\&. +Frida1 includes raw data reduction routines for numerous backscattering and time\-of\-flight spectrometers\&. These routines are not ported to Frida2, but to the separate raw\-data reduction package SLAW: http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/slaw/\&. .sp .SH "AUTHOR" Joachim Wuttke <j\&.wuttke@fz\-juelich\&.de> .sp -.SH "RESSOURCES" -Main web site: http://www\&.messen\-und\-deuten\&.de/frida/ +.SH "INSTALLATION" +Installation guide: http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/doku/doku\&.php?id=frida:installation .sp -Download location: http://www\&.messen\-und\-deuten\&.de/frida/src/ (old download location at sourceforge\&.net no longer maintained \- too much advertising there, too slow, too complicated) +Download location: http://www\&.messen\-und\-deuten\&.de/frida/src/ +.sp +The old download location at sourceforge\&.net is no longer maintained (too much advertising, too slow, too complicated) .sp Development snapshot: http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/frida2\&.git/ .sp +.SH "DOCUMENTATION" +Main web site: http://www\&.messen\-und\-deuten\&.de/frida/ +.sp Documentation wiki: http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/doku/doku\&.php?id=frida:frida .sp .SH "BUGS" -Numerous\&. See http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/flyspray/ +See http://iffwww\&.iff\&.kfa\-juelich\&.de/~wuttke/flyspray/index\&.php?project=2&do=index&switch=1\&. +.sp +Send bug reports to j\&.wuttke@fz\-juelich\&.de\&. .sp .SH "COPYING" Copyright \(co 2009 Joachim Wuttke\&. Free use of this software is granted under the terms of the GNU General Public License (GPL)\&. @@ -48,3 +60,8 @@ j.wuttke@fz-juelich.de .RS 4 \%mailto:j.wuttke@fz-juelich.de .RE +.IP " 2." 4 +j.wuttke@fz +.RS 4 +\%mailto:j.wuttke@fz +.RE diff --git a/pub/doc/frida2.man.html b/pub/doc/frida2.man.html index f03ba7990aaaf0f55f516887f8f0a8eaa6fad60c..ec01e63eaa6d4f9ded82fa78f949e650e90090b6 100644 --- a/pub/doc/frida2.man.html +++ b/pub/doc/frida2.man.html @@ -3,8 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.5.2" /> -<title>FRIDA(1)</title> +<meta name="generator" content="AsciiDoc 8.2.7" /> <style type="text/css"> /* Debug borders */ p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { @@ -91,7 +90,7 @@ span#author { } span#email { } -span#revnumber, span#revdate, span#revremark { +span#revision { font-family: sans-serif; } @@ -111,21 +110,17 @@ div#footer-badges { padding-bottom: 0.5em; } -div#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} +div#preamble, div.tableblock, div.imageblock, div.exampleblock, div.verseblock, div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, div.admonitionblock { - margin-top: 1.0em; + margin-right: 10%; + margin-top: 1.5em; margin-bottom: 1.5em; } div.admonitionblock { - margin-top: 2.0em; - margin-bottom: 2.0em; - margin-right: 10%; - color: #606060; + margin-top: 2.5em; + margin-bottom: 2.5em; } div.content { /* Block element content. */ @@ -161,25 +156,26 @@ div.sidebarblock > div.content { padding: 0.5em; } +div.listingblock { + margin-right: 0%; +} div.listingblock > div.content { border: 1px solid silver; background: #f4f4f4; padding: 0.5em; } -div.quoteblock, div.verseblock { - padding-left: 1.0em; - margin-left: 1.0em; - margin-right: 10%; - border-left: 5px solid #dddddd; - color: #777777; +div.quoteblock { + padding-left: 2.0em; } - div.quoteblock > div.attribution { padding-top: 0.5em; text-align: right; } +div.verseblock { + padding-left: 2.0em; +} div.verseblock > div.content { white-space: pre; } @@ -202,17 +198,17 @@ div.admonitionblock .icon { } div.admonitionblock td.content { padding-left: 0.5em; - border-left: 3px solid #dddddd; + border-left: 2px solid silver; } div.exampleblock > div.content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; + border-left: 2px solid silver; + padding: 0.5em; } div.imageblock div.content { padding-left: 0; } +div.imageblock img { border: 1px solid silver; } span.image img { border-style: none; } -a.image:visited { color: white; } dl { margin-top: 0.8em; @@ -222,7 +218,6 @@ dt { margin-top: 0.5em; margin-bottom: 0; font-style: normal; - color: navy; } dd > *:first-child { margin-top: 0.1em; @@ -231,123 +226,44 @@ dd > *:first-child { ul, ol { list-style-position: outside; } -ol.arabic { +div.olist > ol { list-style-type: decimal; } -ol.loweralpha { +div.olist2 > ol { list-style-type: lower-alpha; } -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} div.tableblock > table { border: 3px solid #527bbd; } -thead, p.table.header { +thead { font-family: sans-serif; font-weight: bold; } tfoot { font-weight: bold; } -td > div.verse { - white-space: pre; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - -div.hdlist { +div.hlist { margin-top: 0.8em; margin-bottom: 0.8em; } -div.hdlist tr { +div.hlist td { padding-bottom: 15px; } -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { +td.hlist1 { vertical-align: top; font-style: normal; padding-right: 0.8em; - color: navy; } -td.hdlist2 { +td.hlist2 { vertical-align: top; } -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -.footnote, .footnoteref { - font-size: 0.8em; -} - -span.footnote, span.footnoteref { - vertical-align: super; -} - -#footnotes { - margin: 20px 0 20px 0; - padding: 7px 0 0 0; -} - -#footnotes div.footnote { - margin: 0 0 5px 0; -} - -#footnotes hr { - border: none; - border-top: 1px solid silver; - height: 1px; - text-align: left; - margin-left: 0; - width: 20%; - min-width: 100px; -} - @media print { div#footer-badges { display: none; } } -div#toc { - margin-bottom: 2.5em; -} - div#toctitle { color: #527bbd; font-family: sans-serif; @@ -426,146 +342,21 @@ div.verseblock-attribution { } div.exampleblock-content { - border-left: 3px solid #dddddd; + border-left: 2px solid silver; padding-left: 0.5em; } /* IE6 sets dynamically generated links as visited. */ div#toc a:visited { color: blue; } -</style> -<script type="text/javascript"> -/*<+'])'); - // Function that scans the DOM tree for header elements (the DOM2 - // nodeIterator API would be a better technique but not supported by all - // browsers). - var iterate = function (el) { - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { - var mo = re.exec(i.tagName); - if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { - result[result.length] = new TocEntry(i, getText(i), mo[1]-1); - } - iterate(i); - } - } - } - iterate(el); - return result; - } - - var toc = document.getElementById("toc"); - var entries = tocEntries(document.getElementById("content"), toclevels); - for (var i = 0; i < entries.length; ++i) { - var entry = entries[i]; - if (entry.element.id == "") - entry.element.id = "_toc_" + i; - var a = document.createElement("a"); - a.href = "#" + entry.element.id; - a.appendChild(document.createTextNode(entry.text)); - var div = document.createElement("div"); - div.appendChild(a); - div.className = "toclevel" + entry.toclevel; - toc.appendChild(div); - } - if (entries.length == 0) - toc.parentNode.removeChild(toc); -}, - - -///////////////////////////////////////////////////////////////////// -// Footnotes generator -///////////////////////////////////////////////////////////////////// - -/* Based on footnote generation code from: - * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html - */ - -footnotes: function () { - var cont = document.getElementById("content"); - var noteholder = document.getElementById("footnotes"); - var spans = cont.getElementsByTagName("span"); - var refs = {}; - var n = 0; - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnote") { - n++; - // Use [\s\S] in place of . so multi-line matches work. - // Because JavaScript has no s (dotall) regex flag. - note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; - noteholder.innerHTML += - "<div class='footnote' id='_footnote_" + n + "'>" + - "<a href='#_footnoteref_" + n + "' title='Return to text'>" + - n + "</a>. " + note + "</div>"; - spans[i].innerHTML = - "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - var id =spans[i].getAttribute("id"); - if (id != null) refs["#"+id] = n; - } - } - if (n == 0) - noteholder.parentNode.removeChild(noteholder); - else { - // Process footnoterefs. - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnoteref") { - var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); - href = href.match(/#.*/)[0]; // Because IE return full URL. - n = refs[href]; - spans[i].innerHTML = - "[<a href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - } - } - } +/* Because IE6 child selector is broken. */ +div.olist2 ol { + list-style-type: lower-alpha; } - +div.olist2 div.olist ol { + list-style-type: decimal; } -/*]]>*/ -</script> +</style> <script type="text/javascript"> /*<![CDATA[*/ /* @@ -1793,6 +1584,7 @@ else } /*]]>*/ </script> +<title>FRIDA(1)</title> </head> <body> <div id="header"> @@ -1806,23 +1598,27 @@ FRIDA(1) Manual Page </p> </div> </div> -<div id="content"> -<h2 id="_synopsis">SYNOPSIS</h2> +<h2>SYNOPSIS</h2> <div class="sectionbody"> -<div class="paragraph"><p><strong>frida1, ida</strong></p></div> -<div class="paragraph"><p><strong>frida2, frida</strong></p></div> +<div class="para"><p><strong>frida1, ida</strong></p></div> +<div class="para"><p><strong>frida2, frida</strong></p></div> +</div> +<h2 id="_news">NEWS</h2> +<div class="sectionbody"> +<div class="para"><p>The first JCNS School on Data Analysis for Quasielastic Neutron Scattering +with FRIDA will take place 28-29 April 2010 at Garching. Register now: <a href="http://www.jcns.info/DataAnalysis2010/">http://www.jcns.info/DataAnalysis2010/</a></p></div> </div> <h2 id="_description">DESCRIPTION</h2> <div class="sectionbody"> -<div class="paragraph"><p>FRIDA is software for scientific data analysis, primarily written for inelastic neutron scattering. Its data model is quite generic (data files consist of x-y-dy tables that are differentiated by z coordinates), so that it can be used for many different kinds of observational data.</p></div> -<div class="paragraph"><p>Frida1, written in FORTRAN, was developed in the 1990s. The original name IDA was changed to FRIDA just because there were too many other open-source projects all called IDA.</p></div> -<div class="paragraph"><p>Frida2 is a rewrite in C++. +<div class="para"><p>FRIDA is software for scientific data analysis, primarily written for inelastic neutron scattering. Its data model is quite generic (data files consist of x-y-dy tables that are differentiated by z coordinates), so that it can be used for many different kinds of observational data.</p></div> +<div class="para"><p>Frida1, written in FORTRAN, was developed in the 1990s. The original name IDA was changed to FRIDA just because there were too many other open-source projects all called IDA.</p></div> +<div class="para"><p>Frida2 is a rewrite in C++. It is the standard tool for data analysis at the backscattering spectrometer SPHERES. The more specific routines for time-of-flight spectroscopy are currently being ported from Frida1 to Frida2, so that Frida1 can be phased out by mid-2010.</p></div> -<div class="paragraph"><p>Frida1 includes raw data reduction routines +<div class="para"><p>Frida1 includes raw data reduction routines for numerous backscattering and time-of-flight spectrometers. These routines are not ported to Frida2, but to the separate raw-data reduction package SLAW: @@ -1830,36 +1626,34 @@ but to the separate raw-data reduction package SLAW: </div> <h2 id="_author">AUTHOR</h2> <div class="sectionbody"> -<div class="paragraph"><p>Joachim Wuttke <<a href="mailto:j.wuttke@fz-juelich.de">j.wuttke@fz-juelich.de</a>></p></div> +<div class="para"><p>Joachim Wuttke <<a href="mailto:j.wuttke@fz-juelich.de">j.wuttke@fz-juelich.de</a>></p></div> </div> <h2 id="_installation">INSTALLATION</h2> <div class="sectionbody"> -<div class="paragraph"><p>Installation guide: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation</a></p></div> -<div class="paragraph"><p>Download location: <a href="http://www.messen-und-deuten.de/frida/src/">http://www.messen-und-deuten.de/frida/src/</a></p></div> -<div class="paragraph"><p>The old download location at sourceforge.net is no longer maintained +<div class="para"><p>Installation guide: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation</a></p></div> +<div class="para"><p>Download location: <a href="http://www.messen-und-deuten.de/frida/src/">http://www.messen-und-deuten.de/frida/src/</a></p></div> +<div class="para"><p>The old download location at sourceforge.net is no longer maintained (too much advertising, too slow, too complicated)</p></div> -<div class="paragraph"><p>Development snapshot: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/">http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/</a></p></div> +<div class="para"><p>Development snapshot: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/">http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/</a></p></div> </div> <h2 id="_documentation">DOCUMENTATION</h2> <div class="sectionbody"> -<div class="paragraph"><p>Main web site: <a href="http://www.messen-und-deuten.de/frida/">http://www.messen-und-deuten.de/frida/</a></p></div> -<div class="paragraph"><p>Documentation wiki: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida</a></p></div> +<div class="para"><p>Main web site: <a href="http://www.messen-und-deuten.de/frida/">http://www.messen-und-deuten.de/frida/</a></p></div> +<div class="para"><p>Documentation wiki: <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida</a></p></div> </div> <h2 id="_bugs">BUGS</h2> <div class="sectionbody"> -<div class="paragraph"><p>See <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1">http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1</a>.</p></div> -<div class="paragraph"><p>Send bug reports to <a href="mailto:j.wuttke@fz-juelich.de">j.wuttke@fz-juelich.de</a>.</p></div> +<div class="para"><p>See <a href="http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1">http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1</a>.</p></div> +<div class="para"><p>Send bug reports to <a href="mailto:j.wuttke@fz">j.wuttke@fz</a>-juelich.de.</p></div> </div> <h2 id="_copying">COPYING</h2> <div class="sectionbody"> -<div class="paragraph"><p>Copyright © 2009 Joachim Wuttke. Free use of this software is +<div class="para"><p>Copyright © 2009 Joachim Wuttke. Free use of this software is granted under the terms of the GNU General Public License (GPL).</p></div> </div> -</div> -<div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2010-02-06 14:35:57 CEST +Last updated 2010-02-12 11:14:47 CEST </div> </div> </body> diff --git a/pub/doc/frida2.man.txt b/pub/doc/frida2.man.txt index d2bd716c6dbaae425ca440edc91c25f3fdfc1586..6f1b8ea7cf2c36cf9aa921d29cbf7d1cbe0e67e9 100644 --- a/pub/doc/frida2.man.txt +++ b/pub/doc/frida2.man.txt @@ -13,6 +13,12 @@ SYNOPSIS *frida2, frida* +NEWS +---- + +The first JCNS School on Data Analysis for Quasielastic Neutron Scattering +with FRIDA will take place 28-29 April 2010 at Garching. Register now: http://www.jcns.info/DataAnalysis2010/ + DESCRIPTION ----------- diff --git a/pub/doc/frida2.man.xml b/pub/doc/frida2.man.xml index 73901f068d586d0876b77bbefc608f07169b6f03..7163ca97159cf043f831ba33eebf9314a283199b 100644 --- a/pub/doc/frida2.man.xml +++ b/pub/doc/frida2.man.xml @@ -1,63 +1,81 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> -<?asciidoc-toc?> -<?asciidoc-numbered?> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> <refentry lang="en"> <refmeta> <refentrytitle>frida</refentrytitle> <manvolnum>1</manvolnum> -<refmiscinfo class="source"> </refmiscinfo> -<refmiscinfo class="manual"> </refmiscinfo> </refmeta> <refnamediv> <refname>Frida</refname> <refpurpose>Fast reliable interactive data analysis</refpurpose> </refnamediv> -<refsynopsisdiv id="_synopsis"> +<refsynopsisdiv> <simpara><emphasis role="strong">frida1, ida</emphasis></simpara> + <simpara><emphasis role="strong">frida2, frida</emphasis></simpara> + </refsynopsisdiv> +<refsect1 id="_news"> +<title>NEWS</title> +<simpara>The first JCNS School on Data Analysis for Quasielastic Neutron Scattering +with FRIDA will take place 28-29 April 2010 at Garching. Register now: <ulink url="http://www.jcns.info/DataAnalysis2010/">http://www.jcns.info/DataAnalysis2010/</ulink></simpara> + +</refsect1> <refsect1 id="_description"> <title>DESCRIPTION</title> <simpara>FRIDA is software for scientific data analysis, primarily written for inelastic neutron scattering. Its data model is quite generic (data files consist of x-y-dy tables that are differentiated by z coordinates), so that it can be used for many different kinds of observational data.</simpara> + <simpara>Frida1, written in FORTRAN, was developed in the 1990s. The original name IDA was changed to FRIDA just because there were too many other open-source projects all called IDA.</simpara> + <simpara>Frida2 is a rewrite in C++. It is the standard tool for data analysis at the backscattering spectrometer SPHERES. The more specific routines for time-of-flight spectroscopy are currently being ported from Frida1 to Frida2, so that Frida1 can be phased out by mid-2010.</simpara> + <simpara>Frida1 includes raw data reduction routines for numerous backscattering and time-of-flight spectrometers. These routines are not ported to Frida2, but to the separate raw-data reduction package SLAW: <ulink url="http://iffwww.iff.kfa-juelich.de/~wuttke/slaw/">http://iffwww.iff.kfa-juelich.de/~wuttke/slaw/</ulink>.</simpara> + </refsect1> <refsect1 id="_author"> <title>AUTHOR</title> <simpara>Joachim Wuttke <<ulink url="mailto:j.wuttke@fz-juelich.de">j.wuttke@fz-juelich.de</ulink>></simpara> + </refsect1> <refsect1 id="_installation"> <title>INSTALLATION</title> <simpara>Installation guide: <ulink url="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:installation</ulink></simpara> + <simpara>Download location: <ulink url="http://www.messen-und-deuten.de/frida/src/">http://www.messen-und-deuten.de/frida/src/</ulink></simpara> + <simpara>The old download location at sourceforge.net is no longer maintained (too much advertising, too slow, too complicated)</simpara> + <simpara>Development snapshot: <ulink url="http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/">http://iffwww.iff.kfa-juelich.de/~wuttke/frida2.git/</ulink></simpara> + </refsect1> <refsect1 id="_documentation"> <title>DOCUMENTATION</title> <simpara>Main web site: <ulink url="http://www.messen-und-deuten.de/frida/">http://www.messen-und-deuten.de/frida/</ulink></simpara> + <simpara>Documentation wiki: <ulink url="http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida">http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=frida:frida</ulink></simpara> + </refsect1> <refsect1 id="_bugs"> <title>BUGS</title> <simpara>See <ulink url="http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1">http://iffwww.iff.kfa-juelich.de/~wuttke/flyspray/index.php?project=2&do=index&switch=1</ulink>.</simpara> -<simpara>Send bug reports to <ulink url="mailto:j.wuttke@fz-juelich.de">j.wuttke@fz-juelich.de</ulink>.</simpara> + +<simpara>Send bug reports to <ulink url="mailto:j.wuttke@fz">j.wuttke@fz</ulink>-juelich.de.</simpara> + </refsect1> <refsect1 id="_copying"> <title>COPYING</title> <simpara>Copyright © 2009 Joachim Wuttke. Free use of this software is granted under the terms of the GNU General Public License (GPL).</simpara> + </refsect1> </refentry> diff --git a/pub/src/curve.cpp b/pub/src/curve.cpp index c9b56ae9b647ebe87700c67861ede15872a7c92b..cf132d899618585e41f6bc72402f63d7be47e2d8 100644 --- a/pub/src/curve.cpp +++ b/pub/src/curve.cpp @@ -441,13 +441,13 @@ typedef struct { //! Callback routine for use in lm_minimize: function evaluation. -void globalEvaluate( double* par, int m_dat, double* fvec, - void *data, int *info ) +void globalEvaluate( const double* par, int m_dat, const void *data, + double* fvec, int *info ) // arguments (required by lm_minimize): // par r/w function parameters, to be optimized // m_dat r number of data points -// fvec w vector of residues, to be minimized // data r pointer to arbitrary data, here defined as FitDatTyp +// fvec w vector of residues, to be minimized // info w can be use to terminate the minimization { try { @@ -497,8 +497,9 @@ void globalEvaluate( double* par, int m_dat, double* fvec, //! Callback routine for use in lm_minimize: monitor fit progress. -void globalPrintout( int n_par, double* par, int m_dat, double* fvec, - void *data, int iflag, int iter, int nfev ) +void globalPrintout( int n_par, const double* par, int m_dat, const void *data, + const double* fvec, + int printflags, int iflag, int iter, int nfev ) // arguments (required by lm_minimize; see also globalEvaluate): // iflag : 0 (init) 1 (outer loop) 2(inner loop) -1(terminated) // iter : outer loop counter @@ -564,7 +565,8 @@ void NCurveFile::Fit( bool _allow_slow_conv ) CScan *D; CCurve *C; vector<double> Par; - lm_control_type control; + lm_limits_struct limits; + lm_status_struct status; FitDatTyp data; double ysum1, ysum2, ydev2; allow_slow_conv = _allow_slow_conv; @@ -590,10 +592,10 @@ void NCurveFile::Fit( bool _allow_slow_conv ) uint np = fc->T->npar(); - lm_initialize_control( &control ); - control.epsilon = NFitTune::Epsilon; - control.stepbound = NFitTune::Factor; - control.maxcall = NFitTune::nCall; + limits = lm_limits_double; + limits.epsilon = NFitTune::Epsilon; + limits.stepbound = NFitTune::Factor; + limits.maxcall = NFitTune::nCall; for (uint j=0; j<fc->nScan(); j++) { if ( fc->ProtectedScans.contains( j ) ) @@ -622,15 +624,16 @@ void NCurveFile::Fit( bool _allow_slow_conv ) if ( NFitTune::nPrint ) printf("\n"); data.timeout = time(NULL) + NFitTune::maxtime; - lm_minimize( D->size(), npfree, &(Par[0]), - globalEvaluate, globalPrintout, &data, &control ); - if( control.info==10 ) + lmmin( npfree, &(Par[0]), D->size(), &data, + globalEvaluate, &limits, &status, + globalPrintout, 0 ); + if( status.info==11 ) throw string( "exception in fit function" ); for ( uint i=0; i<npfree; i++ ) printf(" %12g", Par[i]); - C->Quality[0] = (double) control.info; + C->Quality[0] = (double) status.info; // calculate coefficient of determination R^2: uint nd = fd->nPts(j); @@ -640,16 +643,16 @@ void NCurveFile::Fit( bool _allow_slow_conv ) ysum2 += SQR( D->y[i] ); } ydev2 = ysum2 - SQR( ysum1 )/nd; // = nd * <(y-<y>)^2> - C->Quality[1] = ydev2!=0 ? 1 - SQR(control.fnorm) / ydev2 : -1; + C->Quality[1] = ydev2!=0 ? 1 - SQR(status.fnorm) / ydev2 : -1; // mean deviation: - C->Quality[2] = SQR(control.fnorm) / nd; + C->Quality[2] = SQR(status.fnorm) / nd; printf( " (%3d->%9.7g)", - control.nfev, C->Quality[NFitTune::mFitMetric] ); + status.nfev, C->Quality[NFitTune::mFitMetric] ); // print status: - printf( "%s\n", lm_shortmsg[ control.info ] ); + printf( "%s\n", lm_shortmsg[ status.info ] ); } } allow_slow_conv = true; diff --git a/pub/src/func.cpp b/pub/src/func.cpp index 8d6ac84b100ee860f2ad7ef345d158bf3e02507b..91ad32c6a60a311b84f4de347b5bf8741992004a 100644 --- a/pub/src/func.cpp +++ b/pub/src/func.cpp @@ -58,7 +58,7 @@ double func_acosd(double v) { return (-1<=v && v<=1) ? 360./twopi*acos(v) : 0; } double func_atand(double v) { return 360./twopi*atan(v); } double func_acotd(double v) { return v!=0 ? 360./twopi*atan(1/v) : 90; } -double func_sinh(double v) { return sinh(v); } // IN PROGRESS .... +double func_sinh(double v) { return sinh(v); } double func_cosh(double v) { return cosh(v); } double func_tanh(double v) { return tanh(v); } double func_coth(double v) { double t=tanh(v); return t==0?0:1/t;} @@ -73,9 +73,9 @@ double func_erfc(double v) { return gsl_sf_erfc(v); } double func_sinc(double v) { return v==0 ? 1 : sin(v)/v; } -double func_ceil(double v) { return ceil(v); } // smallest int >= arg -double func_floor(double v) { return floor(v); } // largest int <= arg -double func_nint(double v) { return round(v); } // nearest int +double func_ceil(double v) { return ceil(v); } +double func_floor(double v) { return floor(v); } +double func_nint(double v) { return round(v); } //**************************************************************************// //* Functions of two arguments *// diff --git a/pub/src/func.h b/pub/src/func.h index 9a54532bff0f4ffa221c3114dd23b724753d2128..9aa84315ddf5905e6bfd413d9447256341dc596c 100644 --- a/pub/src/func.h +++ b/pub/src/func.h @@ -15,30 +15,14 @@ class CFunc { // public (short) interface => TAKE CARE class CCoord coord(class CCoord *co1, class CCoord *co2) const; class CCoord coord(class CCoord *co1, class CCoord *co2, class CCoord *co3) const; - CFunc(string name_in, double(*f_in)(double)) { - // cout << "DEBUG create CFunc(1) ["<<name_in<<"]\n"; - s = name_in; - narg = 1; - f1 = f_in; - }; - CFunc(string name_in, double(*f_in)(double, double)) { - // cout << "DEBUG create CFunc(2) ["<<name_in<<"]\n"; - s = name_in; - narg = 2; - f2 = f_in; - }; - CFunc(string name_in, double(*f_in)(double, double, double)) { - // cout << "DEBUG create CFunc(3) ["<<name_in<<"]\n"; - s = name_in; - narg = 3; - f3 = f_in; - }; - CFunc(string name_in, double(*f_in)(double, vector<double>)) { - // cout << "DEBUG create CFunc(2) ["<<name_in<<"]\n"; - s = name_in; - narg = 2; - f2tv = f_in; - }; + CFunc( string _s, func_f1 _f1 ) + : s(_s), f1(_f1), narg(1) {}; + CFunc( string _s, func_f2 _f2 ) + : s(_s), f2(_f2), narg(2) {}; + CFunc( string _s, func_f3 _f3 ) + : s(_s), f3(_f3), narg(3) {}; + CFunc( string _s, func_f2tv _f2tv ) + : s(_s), f2tv(_f2tv), narg(2) {}; }; namespace NFunctions { // public (short) interface