Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • j.coenen/frida
  • mlz/frida
2 results
Show changes
Commits on Source (2406)
# ??git
*.patch
*~
*.patch
*.swp
*.bak
*.tmp
*.o
*_lex.cpp
*_yacc.cpp
*_yacc.h
src/Makefile
src/src.pro
*.Plo
*.Po
*.lo
*.la
*.lai
*.a
*.so
*.so.*
*.pyc
*.aux
*.bbl
*.blg
*.idx
*.ilg
*.ind
*.log
*.nlo
*.out
*.toc
a.out
html/
frida2-*/
pub/src/frida2
pub/config.h
pub/config.h.in
pub/stamp*
Makefile
Makefile.in
*/Makefile
*/Makefile.in
aclocal.m4
autom4te.cache/*
autom4te.cache
build-aux/*
build-aux
config.log
config.status
configure
demo/.deps
demo/.libs
frida
external_ci
gcc
clang
build
mybuild
qbuild
podstyle.css
pub/src/xax_yacc.hpp
demo/lm_test
lib/.deps
lib/liblmmin.la
lib/lm_eval.lo
lib/lmmin.lo
libtool
pub/py-binding/output
pub/py-binding/cache.xml
*.pypp.*
pub/PyAPI/PythonModule.cpp
doxygen_sqlite3.db
CMakeLists.txt.user*
stages:
- build
mac_x64:
tags:
- mac_x64_cloud
stage: build
before_script:
# Homebrew packages are installed in a non-standard path
- BREWDIR="/opt/homebrew-x86/"
- PATH="$BREWDIR:$BREWDIR/opt/flex/bin:$BREWDIR/opt/bison/bin:$PATH"
- PYPLAT="/Users/qtisas/.pyenv/versions/3.11.6/"
- cmake --version
script:
- OPTDIR=/Users/Shared/Software/scg
- mkdir pub/build
- cd pub/build
- cmake -DCMAKE_PREFIX_PATH="$BREWDIR;$OPTDIR;$PYPLAT" -DCMAKE_BUILD_TYPE=Release -S ..
- make -j4
- ctest --output-on-failure --timeout 120
artifacts:
paths:
- build/*zip
expire_in: 10 days
# windows:
# tags:
# - Windows
# stage: build
# script:
# - New-Item -ItemType "directory" -Confirm:$false -Force:$true -Name "build"
# - cd build
# - cmd.exe "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
# - cmake -G "Visual Studio 16 2019" -A x64 -T host=x64 -DLIB_MAN=OFF -DLIB_INSTALL=OFF -B. ..
# - cmake --build . --config Release
# - Get-Location
# - dir
# - dir Release
# - ctest -C Release --output-on-failure
native_Debian_clang:
tags: &native
- Debian
before_script: &debian_clang
- export CC=clang; export CXX=clang++
- cmake --version
- clang --version
stage: build
script: &native_scr
- pwd && ls
- mkdir pub/build
- cd pub/build
- cmake ..
- make -j6
- ctest -j6 --output-on-failure
# ## Dockerized:
#
# debS_clang:
# tags: &unix
# - Linux
# image: debian:stable
# before_script: &debian_clang
# - apt-get -y update
# - apt-get -y upgrade
# - apt-get -y install cmake perl pkgconf bison flex gnuplot-x11 git
# - apt-get -y install libreadline-dev libgsl-dev libfftw3-dev
# - apt-get -y install libboost-filesystem-dev libboost-dev libyaml-dev
# - apt-get -y install clang
# - git clone https://jugit.fz-juelich.de/mlz/kww.git
# - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# stage: build
# script: &scr
# - pwd && ls
# - cd kww && mkdir build && cd build
# - cmake -DWERROR=ON .. && make -j3 && ctest && make install && cd ../..
# - cd lmfit && mkdir build && cd build
# - cmake -DWERROR=ON .. && make -j3 && ctest && make install && cd ../..
# - cd libcerf && mkdir build && cd build
# - cmake -DWERROR=ON .. && make -j3 && ctest && make install && cd ../..
# - cd pub
# - mkdir build
# - cd build
# - cmake -DWERROR=ON ..
# - make -j8
# - ctest --output-on-failure
#
# debS_gcc:
# tags: *unix
# image: debian:stable
# before_script: &debian_gcc
# - apt-get -y update
# - apt-get -y upgrade
# - apt-get -y install cmake perl pkgconf bison flex gnuplot-x11 git
# - apt-get -y install libreadline-dev libgsl-dev libfftw3-dev
# - apt-get -y install libboost-filesystem-dev libboost-dev libyaml-dev
# - apt-get -y install g++
# - git clone https://jugit.fz-juelich.de/mlz/kww.git
# - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# stage: build
# script: *scr
#
# debT_clang:
# tags: *unix
# image: debian:testing
# before_script: *debian_clang
# stage: build
# script: *scr
#
# debT_gcc:
# tags: *unix
# image: debian:testing
# before_script: *debian_gcc
# stage: build
# script: *scr
#
# debU_clang:
# tags: *unix
# image: debian:unstable
# before_script: *debian_clang
# stage: build
# script: *scr
#
# debU_gcc:
# tags: *unix
# image: debian:unstable
# before_script: *debian_gcc
# stage: build
# script: *scr
#
# suse_clang:
# tags: *unix
# image: opensuse/tumbleweed
# # rolling release with infinite life time
# before_script:
# - zypper -n patch || echo "do it again"
# - zypper -n patch
# - zypper -n ref
# - zypper -n up
# - zypper -n dup
# - zypper -n in cmake perl pkgconf bison flex gnuplot git
# - zypper -n in readline-devel gsl-devel fftw3-devel libyaml-devel
# - zypper -n in boost-devel libboost_filesystem-devel
# - zypper -n in clang gcc glibc-devel libstdc++-devel
# - export CC=/usr/bin/clang
# - export CXX=/usr/bin/clang++
# - git clone https://jugit.fz-juelich.de/mlz/kww.git
# - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# stage: build
# script: *scr
#
# suse_gcc:
# tags: *unix
# image: opensuse/tumbleweed
# # rolling release with infinite life time
# before_script:
# - zypper -n patch || echo "do it again"
# - zypper -n patch
# - zypper -n ref
# - zypper -n up
# - zypper -n dup
# - zypper -n in cmake perl pkgconf bison flex gnuplot git
# - zypper -n in readline-devel gsl-devel fftw3-devel libyaml-devel
# - zypper -n in boost-devel libboost_filesystem-devel
# - zypper -n in gcc-c++
# - git clone https://jugit.fz-juelich.de/mlz/kww.git
# - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# stage: build
# script: *scr
#
# # suse_stable:
# # opensuse:leap, unsupported here because it is at cmake 3.5, while libcerf requires 3.6
#
# ## Centos7 permanently disabled because it does not fully support C++11
# ##
# ##centos7_clang:
# ## tags: *unix
# ## image: centos:centos7
# ## before_script:
# ## - yum -y update
# ## - yum -y install epel-release
# ## - yum repolist
# ## - yum -y install make cmake3 pkgconf perl bison flex gnuplot git
# ## - yum -y install readline-devel gsl-devel fftw3-devel libboost-filesystem boost-devel libyaml-devel
# ## - yum -y install clang gcc glibc-devel libstdc++-devel
# ## - export CC=/usr/bin/clang
# ## - export CXX=/usr/bin/clang++
# ## - git clone https://jugit.fz-juelich.de/mlz/kww.git
# ## - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# ## - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# ## - cmake3 --version
# ## - ctest3 --version
# ## - cpack3 --version
# ## - ln -s /usr/bin/cmake3 /usr/bin/cmake
# ## - ln -s /usr/bin/ctest3 /usr/bin/ctest
# ## - ln -s /usr/bin/cpack3 /usr/bin/cpack
# ## stage: build
# ## script: *scr
# ##
# ##centos7_gcc:
# ## tags: *unix
# ## image: centos:centos7
# ## before_script:
# ## - yum -y update
# ## - yum -y install epel-release
# ## - yum repolist
# ## - yum -y install make cmake3 pkgconf perl bison flex gnuplot git
# ## - yum -y install readline-devel gsl-devel fftw3-devel libboost-filesystem boost-devel libyaml-devel
# ## - yum -y install gcc-c++
# ## - git clone https://jugit.fz-juelich.de/mlz/kww.git
# ## - git clone https://jugit.fz-juelich.de/mlz/lmfit.git
# ## - git clone https://jugit.fz-juelich.de/mlz/libcerf.git
# ## - cmake3 --version
# ## - ctest3 --version
# ## - cpack3 --version
# ## - ln -s /usr/bin/cmake3 /usr/bin/cmake
# ## - ln -s /usr/bin/ctest3 /usr/bin/ctest
# ## - ln -s /usr/bin/cpack3 /usr/bin/cpack
# ## stage: build
# ## script: *scr
run regularly under: valgrind --leak-check=full frida
\ No newline at end of file
# export A=frida2-
rm -f -r $A
cp -r pub $A
cd $A; make maintainer-clean; cd ..
upgit # to synchronize
tar czv -h -f /io/$A.tgz $A/*
best-of-three real times
fit1a fit1b fit2b fit2c oyd1a
v2.3.2g o2 1.32 0.83 0.96 1.02 0.96
b7ce45d o2 1.31 0.75 0.92 1.03 0.96
681796f o2 1.32 0.83 0.88 1.03 0.96
15ee5f8 o2 1.31 0.90 0.87 1.03 1.12
cdcbbc4 o2 1.31 0.82 0.86 1.03 1.14
0ae0a82 o2 1.32 0.71 0.87 1.02 1.12
-unused o2 1.32 0.72 0.86 1.02 1.01
v2.3.3a o2 1.31 0.85 0.86 1.02 0.92
v2.3.3a h5 1.92 1.32 1.32 5.58 1.14
b59c787 h5 1.84 1.15 1.33 5.48 1.12
1170cda o2 1.31 0.86 0.86 1.03 0.91
o2 1.31 0.74 0.87 1.03 0.93
\ No newline at end of file
Frida
=====
**Frida** (\"Fast reliable interactive data analysis\") is a versatile
data analysis program with special routines for inelastic neutron
scattering. It is actively maintained by [Joachim
Wuttke](http://www.fz-juelich.de/SharedDocs/Personen/JCNS/EN/Wuttke_J.html).
News
----
12may20: Bug fix release 2.4.3b.
See the
[changelog](https://jugit.fz-juelich.de/mlz/frida/-/blob/master/pub/CHANGELOG)
for details.
Documentation
-------------
- [Introduction](wiki/introduction.md)
- [Installation](wiki/installation.md)
- [frida.ini](wiki/frida.ini.md) (the configure file)
- [Tutorial](wiki/tutorial/start.md)
- [Session 1](wiki/tutorial/basic_usage.md): Command-line basics, load
file, inspect, plot
- [Session 2](wiki/tutorial/simple_manipulations.md): Select, Bin,
reorganize data.
- [Session 3](wiki/tutorial/elementary_fitting.md): Fit.
- [Session 4](wiki/tutorial/fitting_with_convolution.md): Convolute
theory with experimental resolution.
- Online manual
- [Data model](wiki/data_model.md)
- [Commands](wiki/commands.md)
- [Overwrite or Duplicate](wiki/Overwrite or Duplicate.md)
- [Expressions](wiki/expressions.md)
- [Built-in functions](wiki/built-in_functions.md)
- [Curves](wiki/curves.md)
- [External curves](wiki/external_curves.md)
- Implementation notes (for developers)
- [Design principles](wiki/principles.md)
- [technologies and libraries used](wiki/technologies.md)
- [coding conventions](wiki/coding_conventions.md)
- Old Versions
- [historic data formats](wiki/historic_data_formats.md)
- [frida1](wiki/frida1/start.md)
- Offline manual:
- ![UserManual.pdf](doc/UserManual.pdf) (work in progress, mostly about graphics)
Resources
---------
Download location:
- <https://jugit.fz-juelich.de/mlz/frida/-/tags>: latest release, file
frida\<version\>.tgz
Or clone from
- <https://jugit.fz-juelich.de/mlz/frida/-/tree/master>: \"Clone\"
button on the upper right of the main window
Contact
-------
### Bug reports
Please send bug reports to Joachim. The git development snapshot
contains a bug list (\~/TODO).
### School on Data Analysis
The first JCNS School on Data Analysis for Quasielastic Neutron
Scattering with Frida took place on 28-29 April 2010. The next school
will be organized as soon as a sufficient number of potential
participants have indicated their interest.
==== BUGS ====
or+ should ask for name(unit) AND value
"uninitialized variable" should also mention "unknown command"
==== IMPROVE EXTANT FUNCTIONALITY ====
fit does not yet use improved lmmin API (done?)
'ep0', ...
merge registries; prevent creation of variable with name already used by function
coord name algebra
handling of inf, nan
dp: output for #spec>1 is obfuscated
fs: for curve-calling-external-program (cc ecr or similar)
mfj: remove redundant doc lines
oi: wenn mehrere Files mit rank=2, automatisch in einen File packen
"update plot" to replot after change of axes
fn key binding: fn3-4 to scan k
ft: ignore "#.."
multi-oixy ?
fit functions that depend on y_i (consistent? needed? how?)
==== REQUESTED FUNCTIONALITY ====
one-sided Fourier transform (Zach)
==== DOCUMENTATION ====
Terminology: "file" -> "workspace"
(surprisingly, this concerns almost only the documentation; in the code, only a few
output commands contain "file" in the sense of "workspace". To find them, use
grep -n [Ff]ile `fs` | grep -v "\\file" | grep -v FileIter | grep -v [a-zA-Z]File
)
Universal help/doc associated with
- environment variables like psdir
- operators and functions (now hf; separate operators and functions, reconsider sorting)
refer to external documentation
explain resol, conv, pconv
more info on commands (in command shell and in manual?)
==== REFACTORING ====
Register all commands;
transform within-command dialogs into command options
(this replaces the following "dialog generics":)
- restore ask callback help for lists (prompt for list, not for string)
- restore help on "?" (e.g. expression help for 'md')
- default for plot range
refactor func+op registration so that registered object can be const
(assemble typed function list prior to registration)
lmfit call-back within class, thanks to std::functional
When commands have become programmable:
- review history
- latest action on pX should be part of history
- history replay must not stop for error
- show commands while playing history
- fnc keys not in history
Default file selection:
- inform user about new file selection as result of an operation
- inform user about renumbering after deletion?
- keep curve references intact
history:
- for replaying:
- RETURN not stored
- during interactive session:
- store repeated commands only once
- save every input at once (from history to logging ...)
==== WISHLIST ====
splines (e.g. to approximate measured resolution)
convolution with function
- with spline
- with TOFTOF model
==== WAITING FOR CLUE ====
How to treat blanks in user input:
- operators "mod", "div" suggest to allow blanks in expressions
- "op* 1 .3 99" suggeststo split at blanks
should operations have a return value?
- code for user interrupt
- numeric result?
- pointer to files (replace sel_collect_begin/end mechanism)??
Ctrl+C to abort fit
residual plot
Graphics: simplify; allow LaTeX labels -> Asymptote ? gnuplot ?
distribution: do not overwrite user modifications of ini file
in graph file: doc lines should be formatted such that they can be easily
read in as command lines
script language integration
- testing
- support for Excel-like tables
- towards LAMP
*this$file
Ida.hlp
last change 3mar94
contains on-line help for IDA
*Ida
IDA () main command line.
Short commands :
p = plot
a = add to plot
qui = quit IDA
Command groups :
f* = files (input, output, ..)
d* = directory (and modification of file headers)
e* = edit parameters
m* = manipulations (delete, sum, interpolate, ..)
o* = operations (arithmetics)
t* = transforms (Fourier, ..)
_* = incorporated programs
r* = raw data input
c* = curves and fits
g* = graphics
i* = info
For lists of command groups, enter the first letter.
For help on specific commands, try '? ' followed by the command.
The prompt IDA normally is followed by a list of default-files.
Most commands operate on these files. To operate on other files,
enter a new filelist, followed by a command or not.
*f
IDA> command group f*
(files: input, output, creation,
reorganisation in on-line-memory)
fl = load from disk
fm = make
fc = copy
fdel= delete
fx = exchange (fc and fdel)
fw = write to disk
*fl
IDA () fl <filename> : load file(s)
Load data files into on-line memory.
Usage : with argument : load one file
without argument : loop (reply nothing [RETURN] to exit)
If File names are given without extension, the program looks first
for ".dat", then for ".asc".
File formats : ILL-CrossX, IDA-binary, or IDA-ASCII
Source : FileWrite in i2.f, colling LoadSpectrum in i1.f
*fw
IDA (file-nos) fw : write file(s)
Save internal files on external device.
Any files hold in IDA's on-line memory can be saved, including curves.
As external filename, any valid path name is accepted. If filenames
are given without extension, files will be saved as ".dat", except
if ASCII-format is chosen in which case the extension will be ".asc".
Recommended storage format is IDA-binary; use IDA-ASCII if data shall
be send to sites with different operating system.
Source : FileLoad in i2.f, calling SaveSpectrum in i1.f
*fdel
IDA (file-nos) fdel : delete files
Files are deleted from on-line memory.
There is no way to recover deleted files. Use "fw" to save results.
Source : FileKill in i3.f, calling FileDel in i2.f
*fc
IDA (file-nos) fc : copy files
Duplicate files in on-line memory.
Source : FileCopy in i3.f
*fx
IDA (file-nos) fx : exchange order of files
Files are copied to the end of the on-line memory,
then deleted from their original positions.
Source : FileCopy and FileKill in i3.f
*fm
IDA () fm : make a new file
Create a new on-line file.
This option is used to enter data manually, or to convert foreign formats.
It includes the older conversion program any2ied.
For converting foreign data formats, first go through the interactive
questions section. Then, the program asks to enter spectra in a format
you have determined before. At this point, use "\ie <filename>" to read
the data points from an external file.
Source : FileMake in i3.f
*d
IDA> command group d*
(directory of on-line memory,
inspection and modification of file headers)
df = list of files
dz = list of spectra
dd = list of data entries
di = inspect integer parameters
dr = inspect (and modify) real parameters
dt = inspect (and modify) text parameters
dg = inspect (and modify) graphic parameters
*df
IDA () df : directory of on-line files
Source : FileInfo in i2.f
*dz
IDA (file-nos) dz : directory of spectra
For given files, list all spectra with their z-values
and their x-data ranges.
Source : FileInfo in i2.f
*dd
IDA (file-nos) dd : directory of data entries
For given files, ask for spectra and channels to list,
Source : FileInfo in i2.f
*di
IDA (file-nos) di : inspect integer parameters
Source : FileInfo in i2.f
*dr
IDA (file-nos) dr : inspect (and modify) real parameters
Source : FileRPar in i3.f
*dt
IDA (file-nos) dt : inspect (and modify) text parameters
Source : FileTPar in i3.f
*dg
IDA (file-nos) dg : inspect (and modify) graphics parameters
Source : FileGPar in i3.f
*mca
IDA (file-nos) mca : add channels
For each spectrum of given input files, channels are grouped
together : x and y will be replaced by their average values.
Groups are to be specified in ordered list format, e.g. if there
are 12 channels, "*i3" (which is shorthand for "1,4,7,10") means that
there will be four groups containing channels 1-3,4-6,7-9, and 10-12.
If some spectra of one file are defined on different subranges of a
common grid, the new groups can be set with respect to the common grid.
If spectra have different length and there is no common grid, groups
must be specified individually for each spectrum.
Source : OrgChSum in i4.f
*mcd
IDA (file-nos) mcd : delete channels
For each spectrum of given input files, some channels can be deleted.
The channels that shall NOT be deleted are to be specified, either by
their numbers in ordered list format, or by their x- or y-values.
Channel specification from files is decouraged.
If channels are specified by numbers, all spectra of one file are
compared in order to decide whether there is a common x-grid; in this
case, numbers can be specified with respect to the common grid.
If spectra have different length and there is no common grid, channel
numbers must be given individually for each spectrum.
Source : OrgChCut in i4.f
*mco
IDA (file-nos) mco : sort channels
Sort each spectrum of given input files in ascending order in x.
If there is more than one occurence of some x-value, the corresponding
channels are grouped together, taking the average y-value.
Source : OrgChSort in i4.f
*msa
IDA (file-nos) msa : add spectra
For each input file, replace spectra by groups of spectra.
For each group, channel by channel, input y are replaced by their
average values.
Groups are to be specified by the number of the first old spectrum
of each new group, in ordered list format.
If spectra have different x-grids but the same number of channels,
it is possible to proceed by channel numbers. New x-values are then
set by averaging over input files. It recommended, however, to first
regroup the data onto a common grid (using "mgr") before using "msa".
Source : OrgSpectraSum in i4.f
*msd
IDA (file-nos) msd : delete spectra
For each input file, delete some spectra.
The spectra to be deleted are to be specified in ordered list format.
Answer "-" (empty list) to escape.
Source : OrgSpectraCut in i4.f
*mso
IDA (file-nos) mso : sort spectra
For each input file, sort spectra by their z-value. The contents
of the spectra themselves is not changed.
Source : OrgSpectraSort in i4.f
*msj
IDA (file-nos) msj : join spectra
For each input file, group some spectra together. Output spectra
are build by simply appending input spectra one after each other.
Optionally, channels can be sorted (same as calling "mco").
Groups are to be specified the same way as in "msa".
Source : OrgSpectraJoin in i4.f
*msx
IDA (file-nos) msx : exchange spectra <-> channels
For each input file, exchange x- and z-coordinate.
Evidently, all spectra must be defined on a common x-grid.
Source : OrgSpectraExch in i4.f
*mfs
IDA (file-nos) mfs : sum spectra of different files
It supposed that the input files have commensurable z-scales.
Then, all spectra sharing the same z are averaged to form one
output spectrum (whether two z's are considered equal is controlled
by a "tolerance" parameter).
The averaging can only be done, if the x-grids are identical.
Source : OrgFileJoin in i4.f
*mfj
IDA (file-nos) mfj : append files into one file
Simply, make one file out of several input files.
Say, there are 2 files with 3 spectra each : (ABC) and (abc).
Then, the output file will contain either (ABCabc) (option "file
after file"), or (AaBbCc) (option "spectrum after spectrum").
The spectra themselves remain unchanged (except if "msj" is
called at the end).
Source : OrgFileJoin in i4.f
*mfx
IDA (file-nos) mfx : exchange files <-> spectra
Suppose, spectra y(x) have been measured for different values
of two parameters U and V. Originally, spectra with the same U
may have been grouped into files with a real-parameter r(n)=U,
and V has a z-coordinate. The operation "mfx" regroups them into
files with the same real-parameter r(n')=V and a z-coordinate U.
Source : OrgFileJoin in i4.f
*mgi
IDA (file-nos) mgi : new x-grid, interpolate y
Choose a new x-grid, then determine y(x) on this grid by
interpolation of input data.
Options for choosing a grid are :
> from a file f2
> > (1:1) for each output spectrum one spectrum of f2
with same z is searched for
> > (select one) one spectrum of f2 defines the grid for all output
> regular grid
> > (lin) X(i) = X(1) + [X(n)-X(1)]*[(i-1)/(n-1)]
> > (log) X(i) = X(1) * [X(n)/X(1)]^[(i-1)/(n-1)]
> > (1/2-log) starts logarithmically at X(1)=-X(n), becomes linear
around 0 (from -crossover to +crossover), then
returns to logarithmic increase until X(n).
Source : OrgGrid in i4.f
*mge
IDA (file-nos) mge : new x-grid, extrapolate y
Choose a new x-grid, then determine y(x) on this grid by
interpolation and extrapolation.
Options for extrapolations include
> by 0
> by any other given value
> by value of nearest neighbours
Options for choosing a new grid are the same as for mgi (see there).
Source : OrgGrid in i4.f
*mgr
IDA (file-nos) mgr : new x-grid, redistribute y
Choose a new x-grid, then determine y(x) on this grid by
redistributing histogram intensities of input data.
Options for choosing a new grid are the same as for mgi (see there).
Source : OrgGrid in i4.f
*mgd
IDA (file-nos) mgd : new x-grid, reduce input
Choose a new x-grid. If there are several x on input which
fall into the same interval of the new grid, only one x-y pair
per interval is retained, the other input data are thrown away.
This option is needed for producing final output, when experimental
data had to be temporarily interpolated onto a finer grid.
Options for choosing a new grid are the same as for mgi (see there).
Source : OrgGrid in i4.f
*ox
IDA (file-nos) ox <function <2nd argument>> : operate on x
Replace x by a function of x and possibly a second argument.
Examples : "6-8 ox / ef" devides x by a constant which will be asked
for individually for each of the input files 6-8;
"7 ox $ x'" replaces x by x' of another file (the number
of which will be asked for)
Source : OprPoint in i5.f
*oy
IDA (file-nos) oz <function <2nd argument>> : operate on y
Replace y by a function of y and possibly a second argument.
Examples : "6 oy * i" multiplies y by an argument y'(z) which
will be read from another file
"1-2 oy $/ d" replace y by dy/y, where dy will be taken
from the same input files 1-2 as y
Source : OprPoint in i5.f
*oz
IDA (file-nos) oz <function <2nd argument>> : operate on z
Replace z by a function of z and possibly a second argument.
Source : OprPoint in i5.f
*oi
IDA (file-nos) oi : calculate an integral property
For a spectrum y(x), a property i[y(x)] is calculated.
Examples: maximum value of y,
x at maximum of y,
integral I dx y(x).
If there is only one input spectrum, the output is a single number.
If the input file contains several spectra, the output is saved
as a file containing the spectrum i(z).
Source : OprIntegral in i5.f
*ot
IDA (file-nos) ot : clone y(x) into a tensor product y(x,z)
Suppose you have one spectrum y(x), and you want to manipulate
this spectrum for different values of a parameter p.
A convenient way to achieve this is to expand y(x) into a file y(x,z),
consisting of a set of identical spectra y(x) with z=p.
You can either read z from another file or specify a regular grid.
Source : OprTensor in i5.f
*p
IDA (file-nos) p <spectra-nos> : plot
Plot the input files.
When called for the first time, this command opens a graphic window;
on later calls, previous plots are cleared.
Use "a" to add more spectra into existing plot.
See "g*" commands for more graphic options.
Source : IdaPlot in i0.f, calling the graphic library g*.f
*a
IDA (file-nos) a <spectra-nos> : add
Add more spectra to existing plot.
See 'g*' commands for more graphic options.
Source : IdaPlot in i0.f, calling the graphic library g*.f
*gp
IDA () gp <ps-filename> : graphic to postscript
Write the graphic actually shown in the Tektronix window
in a PostScript file. Works even after the Tektronix window
has been closed.
The default filename is l<n>.ps, where <n> is the lowest
integer for which no such file already exists.
The PostScript file may subsequently be modified using
a text editor. Search for the string "Switchboard" for the
most relevant commands.
Source : GraSoftCopy in g2.f
*g:
IDA () g: : list graphic setup
List setup of the chosen graphic window.
Use "gw" to change the window.
Source : GraChoice in g2.f
*gw
IDA () gw <window-no> : select graphic window
A graphic window is here the ensemble of all parameters defining
a graphic setup, like coordinate bounds, symbol size, and toggles
between linear/logarithmic scales and so on. It is useful to switch
between graphic windows when functions of incommensurable coordinates
with completely different x- and y-bounds are to be plotted.
Different graphic windows do NOT correspond to different windows
on the X-terminal.
Source : GraChoice in g2.f
*cc
IDA (file-nos) cc : create curve
Create a curve for fitting the input files.
Curves are saved internally like data files; they can be written
to external files with "fw", they can be plotted with "p" and "a",
but most other operations are meaningless with curves.
Source : CuCreate in i6.f
*i
IDA> command group i* (info on the state of the program)
ia = array dimensions'
*eoi
--------------------------------------------------------------------------
--------------------------------------------------------------------------
FRIDA (fast reliable inelastic data analysis)
<http://frida.sourceforge.net> is a program for generic spectral
analysis, with many specialized routines for inelastic neutron
scattering. The FORTRAN version Frida-1 is an updated version of
Joachim Wuttke's IDA, with contributions from the community. The
maintainer is Florian Kargl <f_kargl@users.sourceforge.net>.
FRIDA is released under the GNU public license.
(C) Joachim Wuttke 1990-2001
(C) Florian Kargl 2006
--------------------------------------------------------------------------
--------------------------------------------------------------------------
==========================================================================
Frida-1-4
==========================================================================
Version July 2007
* several bug fixes
- 1619502 msa problem solved (i41.f bug)
- i60.f and i66.f severe bug for KWW fit.
times tau as shown by fitting routine were a factor e/hbar to large
-> now temporarily fixed by multiplication factor
-> final fix has to be new KWW tables.
- i72.f option for activated for _coq: grid chosen by hand
* Standard dimensions of program changed in i_dim.f
(variable Mmem=14000000) this corresponds to a program
size of approximately 128 MB after compilation which
is especially comfortable for the read in of TOFTOF data.
For other applications a tenth of this size might still be enough.
* some new fit routines in i66.f
==========================================================================
Frida-1-2
==========================================================================
Version November 2006
* Bug fixes for files
* NeXus read in routine for PSI instrument FOCUS implemented and
running --> Nexus installation see comments below
* TOFTOF frameoverlap option significantly speeded up
according to tracker comment of T. Unruh
* output options for postscript files changed to make it
more user friendly.
gp --> gs: short version, old style only postscript with
graph definitions without wups**a.ps header.
gp (new) : append g2.ps to graph. This file is a 'cat' version
of wups**a.ps and g3.ps
ga : postscript file without any definitions
* read in routine for IRIS instrument implemented, for documentation
of current steps see wiki documentation
* date and time function for ps printing works now properly
* ida.su file containing some definitions now contained in the release
==========================================================================
Frida-1-1
==========================================================================
Version in May 2006
* Bug fixes were performed in i66.f
* A new file was implemented i81.f allowing for the moment
to read in MSD Files generated by OpenGenie based on IRIS
data.
In the near future this file will contain the read in
routines for data of the IRIS instrument.
==========================================================================
Frida-1-0
==========================================================================
This is the first release of the program in April 2006.
----------------------
1. General Information
----------------------
The program consists of a number of modules containing subroutines
providing the general program structure and allowing for different
kinds of data treatment.
The source code can be found on <http://sourgeforge.net/projects/frida>
General information regarding the different modules can be found
in "i00.f". Subsequent information is found in the modules themselves.
A more detailed information can be found on <http://frida.sourceforge.net>.
Details on the project status will be posted via the mailing list of the
project on <http://sourceforge.net/projects/frida>.
The README file contains information on persons (2.) involved in
the project and providing different versions of the program
maintained in different locations. These versions have been merged
in this first release.
Details regarding the installation procedure on a Linux platform
are found under (3.).
Known problems arising during the installation are listed in
(4.). Here, a list of not yet fully implemented read in routines
is posted.
(5.) contains information regarding the printout of figures and
their modification.
----------------------
2. Acknowledgments
----------------------
Tobias Unruh (TOFTOF @ FRM-II) provided us with a refined version
of the Ida program existing at the FOCUS spectrometer at PSI.
The original Focus Read In was written by Andreas Meyer (E13, TUM),
and required a NeXus to Ascii converter program. To read in
the HDF/NEXUS data directly a subroutine was written by
Fanni Juranyi (FOCUS @ PSI) that has been modified by T. Unruh.
A commented version of this read in routine is provided in this
program for details see (4.).
M. M. Koza maintained a version of IDA at ILL. For the release
of Frida-1 the latest update of this version become not
available to us. The backscattering read in routines adapted
to new ILL standards will be included in the next release.
There are a number of people working on the code over the past
13 years. Their contribution is acknowledged within the source
code. Details will be attached to a forthcoming version of this
README.
----------------------
3. Installation
----------------------
!! Linux Absoft Compiler !!
*** pre installation instructions ***
* unzip and untar the source code
tar -zxvf frida-1-2.tgz
will unpack the data in a new directory
FRIDA1. Subdirectory for/num/ contains
numerical tables for fitting.
* create subdirectory 'oba'
* create subdirectory 'exa'
* Note: if MSCAT shall be executable
modify Makefile by including 'i94.f'
in compilation procedure. Change i00.f
removing the comment signs at '_mss'.
* If the full mode coupling model shall
be used remove comment signs at '_fmm'
in i00.f.
* If problems arise with the ida.su file
change path definitions in i00.f to
your path.
* In the current release the NEXUS Read in
(RRT_In_Foc in i80.f) is included. To make
the code working the latest Version of NEXUS
and HDF have to be installed on the system.
The napif.inc, the napif.f, the napi.f and the
napi.h of the NEXUS distribution shall be copied
in the source tree of the Frida-1 program. The
Makefile has to be modified accordingly. See
library calls in the Makefile attached to this
release (LIBNAG definition and following lines).
Check for missing libraries on your system.
!!! If you don't want to use the NEXUS file read in
comment the corresponding lines in i80.f and i00.f
similar to the previos release!!!
* For the IRIS read in that is contained in i81.f
the libget routines provided by the Computing
group at ISIS are necessary. The Fortran code
can be downloaded from there website.
* if the NeXus read and the libget routine to
read in ISIS data is used simultaneously
then the libget routines must be modified
prior to compilation:
In io.f the TRUELINE function must be commented.
* The makefile of the libget routines has to
be modified in any case to make it compatible
with the conventions used by absoft compilation.
All subroutines have to be in lowercase letters
and with a underscore at the end.
f77 has to be invoked with -c -f -B108 flag.
*** requirements ***
* libnag.a (NAG FORTRAN 77 library)
* libg2c.a
* libm.a
* for Nexus read in the following additional libraries
are required:
* libNeXus.a
* libhdf5.a
* libhdf.a
* libdf.a
* libz.a
* libjpeg.a
* for IRIS data read in the libget libraries are
necessary
* libget.a standard (if no Nexus read in is used)
* libget.a modified (if Nexus read in is used)
*** installation ***
* type 'make -f Makefile' or simply 'make'
in source directory
* the object files are created in the 'oba' subdirectory
* if the compilation is successful a
executable 'frida1' is created in the
'exa' subdirectory
*** post installation instructions ***
* to invoke Frida-1 a x-terminal or any terminal providing
Tektronix support is mandatory for full graphical capabilities.
Note: In a standard shell only the text base
part is working. No visualization is possible.
* it might be convenient to define the following
alias in the '.bashrc':
alias i="xterm -title 'Frida-1 Linux Version 1.0' -sb -sl 5000
-bg white -fg black -cr chartreuse -fn 13x8 -g 82x27+2+358
-e /home/user/Frida1/exa/frida1 &"
modify path according to where frida1 is located on the
harddisk
!! Linux GNU Compiler !!
* The posted version cannot be compiled with the standard
GNU compiler shipped with standard Linux versions for PC.
A major problem is the string handling and some intrinsics.
The problem was partly solved by Christian Geisler.
However, the program (not this release) has still to be
tested for some minor bugs.
!! SGI workstation !!
* Compilation on a SGI workstation should in principle
be possible. Be aware off using the correct l0sgi.f
instead of l0x11.f in the Makefile.
----------------------
4. Known 'bugs'
----------------------
1. The program dumps if a wrong file number is entered
while reading in DCS (rdcs command) data. Please
be careful on using the correct numbers.
2. The multiphonon correction procedure '_muc' based
on code of R. Reichardt is still in a cryptic
state. The source code may provide you with some
ideas.
----------------------
5. Figure printing
----------------------
We gratefully acknowledge the work of H. P. Schildberg providing
together with Joachim Wuttke a PostScript header file with intriguing
user commands.
The latest modification of the header file 'wups05a.ps' and a
previous version wups97a.ps are attached to this release.
The first file now allows also for correct printing of error
bars in logarithmic y-axis environments.
g3.ps contains basic definitions of the linestyle and
general layout of a file printed from the Frida-1 program
to the harddisk.
A figure shown in the Textronix window can be printed
by typing 'gp <file-name.ps>' at the command line.
If <file-name.ps> is omitted a file 'l#.ps' with '#'
being the smallest not yet existing number is created.
The ps-file contains the file g2.ps, axis definitions
and the data provided by Frida-1 plus the header file.
If you want to use a short version without the header
containing the ps-specific definitions then type
'gs <file-name.ps> in the terminal.
To print or visualize the file the header 'wups05a.ps'
has to be attached by e. g. 'cat wups05a.ps file.ps > ~/P.ps'.
The latter may be defined as alias 'gn' in your .bashrc.
In the g2.ps and g3.ps file there are a number of switches
that allow to modify the ps-file. A figure containing a number of
different possibilities like Greek letters, annotations,
lists for curve descriptions can be obtained upon request.
======
Update May 2006
======
i66.f function nr. 36 has been corrected
was not implemented in previous release
despite being available in the menu.
======
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
WuGdict07a begin %% the following lines are produced by g3.ps
WuGdict05a begin %% the following lines are produced by g3.ps
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
......@@ -6,38 +6,35 @@ WuGdict07a begin %% the following lines are produced by g3.ps
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EdgeLeftDIN
10 dup autolabel defsiz
1 dup dup geld 3 2 roll defred
2. -11 offset
7.8 dup gald deftot
/fullscale { EdgeLeftDIN 3 -10 offset 1 defsca } def
/inclscale { -10 -10 offset 1 defsca } def
fullpage { fullscale } { inclscale } ifelse
0 -2 offset % positive offset moves it right and up.
1 1 1 defred
1 1 language
0 0 InfSet % plot fnam, info
1 1 InfSet % plot fnam, info
1 dup 2 SymGSet % slin srad serr(2=from pset) : graph symbols, global preset
0 setschool
/EndFrame { plotafter Basta } def
% /setboxbackgroundcolor { 0.93 setgray } def
% x y 24 abcset
% /next{ 12 0 offset } def /nextPoints{ next } def /nextCurve{ next } def
% 100 DDsetresolution
/EndFrame { Basta } def % comment this line out to use frame advancing
{ 0 -18 } { 16 0 } 6 3 ModFrame
1 100 pColSet % arg1: color on/off; arg2: max no. of colours
0 100 pColSet % arg1: color on/off; arg2: max no. of colours
/pStyles [
{ { 1 1 0 1. 1. pset } { 1 1 0 1. 1. pset 0 ipCol} ifpcol } % 1
{ { 1 0 0 1. 1. pset } { 1 1 0 1. 1. pset 70 ipCol} ifpcol } % 2
{ { 1 1 0 1. 1. pset } { 1 1 0 1. 1. pset 10 ipCol} ifpcol } % 1
{ { 1 0 0 1. 1. pset } { 1 1 0 1. 1. pset 20 ipCol} ifpcol } % 2
{ { 2 1 0 1. 1. pset } { 1 1 0 1. 1. pset 30 ipCol} ifpcol } % 3
{ { 2 0 0 1. 1. pset } { 1 1 0 1. 1. pset 80 ipCol} ifpcol } % 4
{ { 2 0 0 1. 1. pset } { 1 1 0 1. 1. pset 40 ipCol} ifpcol } % 4
{ { 3 1 0 1. 1. pset } { 1 1 0 1. 1. pset 50 ipCol} ifpcol } % 5
{ { 3 0 0 1. 1. pset } { 1 1 0 1. 1. pset 15 ipCol} ifpcol } % 6
{ { 3 0 0 1. 1. pset } { 1 1 0 1. 1. pset 60 ipCol} ifpcol } % 6
{ { 4 1 0 1. 1. pset } { 1 1 0 1. 1. pset 70 ipCol} ifpcol } % 7
{ { 4 0 0 1. 1. pset } { 1 1 0 1. 1. pset siemensred } ifpcol } % 8
{ { 4 0 0 1. 1. pset } { 1 1 0 1. 1. pset siemensblue } ifpcol } % 8
{ { 4 0 0 1. 1. pset } { 1 1 0 1. 1. pset siemensgreen } ifpcol } % 8
{ { 4 0 0 1. 1. pset } { 1 1 0 1. 1. pset siemensorange } ifpcol } % 8
{ { 5 1 0 1. 1. pset } { 1 1 0 1. 1. pset siemensdark } ifpcol } % 9
{ { 5 0 0 1. 1. pset } { 1 1 0 1. 1. pset siemenspink } ifpcol } % 0
{ { 4 0 0 1. 1. pset } { 1 1 0 1. 1. pset 80 ipCol} ifpcol } % 8
{ { 5 1 0 1. 1. pset } { 1 1 0 1. 1. pset 90 ipCol} ifpcol } % 9
{ { 5 0 0 1. 1. pset } { 1 1 0 1. 1. pset 90 ipCol} ifpcol } % 0
] def
0 100 cColSet % arg1: color on/off; arg2: max no. of colours
......@@ -46,11 +43,13 @@ EdgeLeftDIN
{ { 1. [1 3 ] lset } { 1. [] lset 20 icCol} ifccol } % 2
{ { 1. [8 6 ] lset } { 1. [] lset 30 icCol} ifccol } % 3
{ { 1. [8 3 1 3 ] lset } { 1. [] lset 40 icCol} ifccol } % 4
{ { 1. [2 2 ] lset } { 1. [] lset 50 icCol} ifccol } % 5
{ { 1. [1.8 ] lset } { 1. [] lset 60 icCol} ifccol } % 6
{ { 1. [3 1.8 ] lset } { 1. [] lset 70 icCol} ifccol } % 7
{ { 1. [2 2 3.5 2 ] lset } { 1. [] lset 80 icCol} ifccol } % 8
{ { 1. [2 2 5.5 2 ] lset } { 1. [] lset 90 icCol} ifccol } % 9
] def
Resets
BoxBackground
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% now the output produced by WuGra %%
......
WuGdict97a begin %% the following lines are produced by g3.ps
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Switchboard %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16 dup deftot
fullpage {EdgeLeftDIN 1.3 -12 1} {-10 -10 1} ifelse defsca offset
0 0 offset % positive offset moves it right and up.
1 1 language
1 0 InfSet % plot fnam, info
1 dup 2 SymGSet % slin srad serr(2=from pset) : graph symbols, global preset
/next { dx dy offset } bind def
1 100 pColSet % arg1: color on/off; arg2: max no. of colours
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% now the output produced by WuGra %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/filename (wups-coltest) def
10 -3 18 showfilename
%: Coordinate system :
% Lin x-axis from 0.0000000E+00 38.00000
% Lin y-axis from 0.0000000E+00 360.0000
Resets
0 10 0 0 0 90 OneAxx Axx % Tic xTacL xNumL % low x axis
0 10 0 10 0 270 OneAxx Axx % Tic xTacH % top x axis
0 10 0 0 90 0 OneAxx Axx % Tic yTacL yNumL % left y axis
0 10 10 0 90 180 OneAxx Axx % Tic yTacH % right y axis
3 1 0 1.67 1. pset
0 1 99 {
dup ipCol
100 div 360 mul dup cos 3.3 mul 5 add x sin 3.3 mul 5 add 0 t
} for
Basta % now plot the page (if Basta is not redefined)
C ====================================================================
C
C Library WuGra : Graphics
C Include g_dim : Array dimensions
C
C ====================================================================
INTEGER MGreg, MKreg, MTreg, MSreg, MCgra, MGW
PARAMETER (MGreg=80000,MKreg=96,MCgra=40960,MTreg=300,MSreg=20)
PARAMETER (MGW=10, MGW6=6*MGW)
PROGRAM TEST
C --------------------------------------------------------------------
C Declarations :
C --------------------------------------------------------------------
IMPLICIT NONE
DOUBLE PRECISION X02AHF, X02AJF, X02AKF, X02ALF, X02AMF, X02ANF
INCLUDE 'l_def.f'
CHARACTER*80 Fehler
LOGICAL qOv
Print *, X02AHF()
Print *, X02AJF()
Print *, X02AKF()
Print *, X02ALF()
Print *, X02AMF()
Print *, X02ANF()
END ! Test
This diff is collapsed.
C ====================================================================
C
C Library IDA : Ingenious Data Analysis
C Modul i01 : plot (interface to g2.f)
C
C ====================================================================
SUBROUTINE IdaPlot (Word, nJList, JList, Object, Fehler)
C --------------------------------------------------------
! call plot routines to create a frame and to show data
! as a subroutine JWu 30jul91.
! 12mar96: clear division: first setup, then plot.
IMPLICIT REAL *8 (a-h,o-p,r-z)
IMPLICIT LOGICAL (q)
INCLUDE 'i_dim.f'
INCLUDE 'i_wrk.f'
INCLUDE 'l_def.f'
CHARACTER*(*) Fehler, Object, Word
DIMENSION JList(*)
INTEGER K1K(MK), K2K(MK), K3K(MK)
REAL*8 Zp(MK), Z(MZ)
CHARACTER*1 action
CHARACTER*40 Co3(3), Un3(3), CoZ(MZ), UnZ(MZ),
* CoP, UnP, Un, file, title, doc,hilf
CHARACTER*80 aus, lisK, lisKold, line
CHARACTER*240 tline0, tline1
DATA lisK /'*'/
IF (nJList.eq.0) THEN
Fehler = ' '
RETURN
ENDIF
C Input commands :
IF (Word.eq.'p' ) THEN
qPlotNew = .true.
ndim = 2
ELSEIF (Word.eq.'a' ) THEN
qPlotNew = .false.
ELSEIF (Word.eq.'pp' ) THEN
qPlotNew = .true.
ndim = 3
ELSE
Fehler = ' Unknown command : '//Word
RETURN
ENDIF
C New coordinate system ?
IF (qPlotNew) THEN
j = JList(1)
nK = iOlfG (j, '#spectra', Fehler)
IF (Fehler.ne.'&ff') RETURN
qCurve = qOlfGdef (j, '?cu', 0, Fehler)
IF (qCurve) THEN
ifc = iOlfG (j, 'fu#', Fehler)
ENDIF
IF (Fehler.ne.'&ff') RETURN
! which spectra ?
IF (Object.ne.' ') THEN
CALL DecJList (Object, MK, nK1, K1K, 1, nK, Fehler)
lisK = Object
IF (nK1.le.0 .or. Fehler.ne.'&ff') RETURN
ELSEIF (nK.eq.1) THEN
K1K(1) = 1
nK1 = 1
ELSE
lisKold = lisK
CALL Compose2 (aus, ' Plot which of the '//cl3(nK), ' spectra')
CALL GetJList (aus, lisK, MK, nK1, K1K, 1, nK)
IF (nK1.le.0) THEN
lisK = lisKold ! old default
Fehler = ' '
RETURN
ENDIF
ENDIF
! get coordinate names & units > determine appropriate window
CALL OlfCnuG (j, 'x', Co3(1), Un3(1), Fehler)
CALL OlfCnuG (j, 'y', Co3(2), Un3(2), Fehler)
IF (ndim.ge.3) CALL OlfCnuG (j, 'z1', Co3(3), Un3(3), Fehler)
IF (Fehler.ne.'&ff') RETURN
CALL GraSetWdw (ndim, Co3, Un3, Fehler)
IF (Fehler.ne.'&ff') RETURN
! (re)set x y (and z) scales of the chosen window
! der Ablauf ist ganz einfach : man ruft die Routine
! {GraSetSca}, die ihrerseits "uber {action} eine
! bestimmte Reaktion verlangt, die im folgenden
! ausgef"uhrt wird und gegebenenfalls nach {GraSetSca}
! zur"uckspringt.
xi = 0
xf = 0
22 CALL GraSetSca (1, 'x', xi, xf, action, qLin, igfx, rgfx)
IF (action.eq.'-') THEN ! escape
Fehler = ' '
RETURN
ELSEIF (action.eq.'n') THEN ! calculate new defaults
IF (qCurve) THEN
IF (qLin) THEN
xi = -1
xf = 1
ELSE
xi = .1
xf = 10
ENDIF
ELSE
! search for minimum and maximum
xi = 1d20
xf = -1d20
! loop spectra
DO jK1 = 1, nK1
K = K1K(jK1)
CALL OlfGetX (j, K, n, X, Fehler)
IF (Fehler.ne.'&ff') RETURN
DO i = 1, n
CALL FuVal (igfx, xx, dummy, X(i), 0d0, rgfx, 0d0)
IF (xx.lt.xi .and. (qLin .or. xx.gt.0)) xi = xx
xf = dmax1 (xf, xx)
ENDDO
ENDDO
IF (qLin) THEN
CALL RoundLin (xi, xf, .052d0, 2)
ELSE
CALL RoundLog (xi, xf, .1d0, 1)
ENDIF
ENDIF ! qCurve or not
IF (xi.ge.xf) THEN ! avoid endless loop 24mrz98
xi = xi - 1
xf = xf + 1
ENDIF
GOTO 22
ELSEIF (action.eq.'x') THEN ! revise 'x'
GOTO 22
ENDIF
yi = 0
yf = 0
23 CALL GraSetSca (2, 'y', yi, yf, action, qLin, igfy, rgfy)
IF (action.eq.'-') THEN ! escape
Fehler = ' '
RETURN
ELSEIF (action.eq.'n') THEN ! calculate new defaults
yi = 1d49
yf = -1d49
! loop spectra
DO jK1 = 1, nK1
K = K1K(jK1)
IF (qCurve) THEN
! calculate value without convolution (and without par(18))
n = 2
X(1) = xi
X(2) = xf
CALL OlfGetY (j, K, ndummy, Y1, Fehler)
IF (Fehler.ne.'&ff') RETURN
CALL CuFuVal (ifc, Y1, X, Y, n, Fehler)
IF (Fehler.ne.'&ff') RETURN
ELSE
CALL OlfGetXY (j, K, n, X, Y, Fehler)
IF (Fehler.ne.'&ff') RETURN
ENDIF
DO i = 1, n
CALL FuVal (igfx, xx, dummy, X(i), 0d0, rgfx, 0d0)
IF (xi.le.xx .and. xx.le.xf) THEN
CALL FuVal (igfy, yy, dummy, Y(i), 0d0, rgfy, 0d0)
IF (yy.lt.yi .and. (qLin .or. yy.gt.0)) yi = yy
yf = dmax1 (yf, yy)
ENDIF
ENDDO
ENDDO
IF ((.not.qLin .and. yi.le.0 .or. yf.le.yi)) THEN ! kommt vor
CALL Gong (2)
Print *, 'curve starts or ends below 0: yi yf = ', yi, yf
yi = 1d-10
yf = 1d10
ENDIF
IF (qLin) THEN
CALL RoundLin (yi, yf, .052d0, 2)
ELSE
CALL RoundLog (yi, yf, .1d0, 1)
ENDIF
IF (yi.ge.yf) THEN ! avoid endless loop 12nov96
yi = yi - 1
yf = yf + 1
ENDIF
GOTO 23
ELSEIF (action.eq.'x') THEN ! revise 'x'
GOTO 22
ENDIF
IF (ndim.lt.3) GOTO 25
zi = 0
zf = 0
24 CALL GraSetSca (3, 'z', zi, zf, action, qLin, igfz, rgfz)
IF (action.eq.'-') THEN ! escape
Fehler = ' '
RETURN
ELSEIF (action.eq.'n') THEN ! calculate new defaults
CALL OlfGet1ZofK (j, 1, nKz, Zp, Fehler)
IF (Fehler.ne.'&ff') RETURN
zi = 1d20
zf = -1d20
DO K = 1, nKz
CALL FuVal (igfz, z1, dummy, Zp(K), 0d0, rgfz, 0d0)
IF (z1.lt.zi .and. (qLin .or. z1.gt.0)) zi = z1
zf = dmax1 (zf, z1)
ENDDO
IF (qLin) THEN
CALL RoundLin (zi, zf, .052d0, 2)
ELSE
CALL RoundLog (zi, zf, .1d0, 1)
ENDIF
GOTO 24
ELSEIF (action.eq.'x') THEN ! revise 'x'
GOTO 22
ENDIF
25 CONTINUE
! Now install the chosen axes and proceed to plot them:
CALL GraSetAxs (Fehler)
IF (Fehler.ne.'&ff') RETURN
CALL GraPlotCS (Fehler)
IF (Fehler.ne.'&ff') RETURN
iK = 0
ENDIF ! qPlotNew
C Proceed to plot (loop files / spectra) :
DO lj = 1, nJList
j = JList(lj)
qFileNew = .true.
nK = iOlfG (j, '#spectra', Fehler)
CALL tOlfG (j, 'fil', file, Fehler)
CALL tOlfG (j, 'tit', title, Fehler)
IF (Fehler.ne.'&ff') RETURN
qCurve = qOlfGdef (j, '?cu', 0, Fehler)
IF (Fehler.ne.'&ff') RETURN
IF (qCurve) THEN
ifc = iOlfG (j, 'fu#', Fehler)
qConv = qOlfG (j, '?conv', Fehler)
jparin = iOlfGdef (j, 'fit-par-file#', 0, Fehler)
nplopts = iOlfGdef (j, 'plot-#pts', 100, Fehler)
ri = rOlfGdef (j, 'plot-i', Un, 0.d0, Fehler)
rf = rOlfGdef (j, 'plot-f', Un, 0.d0, Fehler)
doc = '96/7'
IF (Fehler.ne.'&ff') RETURN
IF (qConv) THEN ! possibly with convolution
CALL GraQuit ()
j2 = jCuConvAsk (qCurve, qConv)
IF (j2.ne.0) THEN
CALL GetK2K (j, j2, nK, K2K, Fehler)
IF (Fehler.ne.'&ff') RETURN
ENDIF
ELSE
j2 = 0
ENDIF
IF (jparin.ne.0) THEN
jpar = iAskDMu (' Parameter file', jparin, 0, MF)
IF (jpar.le.0) THEN
Fehler = ' '
RETURN
ENDIF
IF (jpar.ne.jparin) THEN
CALL OlfOpen (j, 1, Fehler)
CALL iOlfP (j, 'fit-par-file#', jpar, Fehler)
CALL OlfClos (j, nK, Fehler)
ENDIF
CALL GetK2K (j, jpar, nK, K3K, Fehler)
IF (Fehler.ne.'&ff') RETURN
ENDIF
ENDIF ! qCurve
IF (.not.qPlotNew .or. lj.gt.1) THEN
! which spectra :
IF (Object.ne.' ') THEN
CALL DecJList (Object, MK, nK1, K1K, 1, nK, Fehler)
lisK = Object
IF (nK1.le.0 .or. Fehler.ne.'&ff') RETURN
ELSEIF (nK.eq.1) THEN
K1K(1) = 1
nK1 = 1
ELSE
lisKold = lisK
CALL GraQuit ()
CALL Compose2 (aus, ' Plot which of the '//cl3(nK), ' spectra')
CALL GetJList (aus, lisK, MK, nK1, K1K, 1, nK)
IF (nK1.le.0) THEN
lisK = lisKold ! old default
Fehler = ' '
RETURN
ENDIF
ENDIF
ENDIF
! loop spectra :
isy = iOlfGdef (j, 'plot-sy#', 0, Fehler)
IF (Fehler.ne.'&ff') RETURN
DO jK1 = 1, nK1
! to avoid excessive waiting :
IF (isy.le.0 .and. jK1.eq.2 .and. nK1.gt.18 .and. ndim.ne.3) THEN
CALL GraQuit ()
CALL Compose2 (aus, ' Plot '//cl3(nK1-1), ' more spectra')
IF (.not.qAskD(aus, 1)) THEN
Fehler = ' '
RETURN
ENDIF
ENDIF
K = K1K(jK1)
CALL OlfGetXYD (j, K, nC, X, Y, D, Fehler)
CALL OlfGetZ (j, K, nZ, Z, Fehler)
IF (Fehler.ne.'&ff') RETURN
IF (nC.eq.0) THEN
Fehler = ' spectrum is empty'
RETURN
ENDIF
IF (qCurve) THEN ! plot curve
! x-range :
CALL GraInquireCS ('x', xmi, xma, igfx, gfpx, liloX)
IF (ri.ne.rf) THEN
xmi = dmax1 (xmi, ri)
xma = dmin1 (xma, rf)
ENDIF
! y-stepwidth :
CALL GraInquireCS ('y', ymi, yma, igfy, gfpy, liloY)
relY = 6.d0 / nplopts ! maximum y-step
! do everything in i6.f :
CALL CuNice (ifc, Y, j2, K2K(K), jpar, K3K(K),
* xmi, xma, igfx, gfpx, liloX,
* ymi, yma, igfy, gfpy, liloY,
* nplopts, relY,
* MC, nC1, X1, Y1, D1, Fehler)
IF (Fehler.ne.'&ff') RETURN
CALL GraPaint (X1, Y1, D1, nC1, Z(1), isy, iLS)
ELSE ! plot data
iK = iK + 1
IF (iK.ge.100) iK = 1 ! to avoid overflow of &sy
IF (isy.eq.0) THEN ! default
IF (ndim.eq.3) THEN
iLSdef = 1 ! always straight lines
ELSE
iLSdef = -iK ! incremental plot symbols
ENDIF
ELSE ! plotsymbol is file-parameter
iLSdef = isy
ENDIF
CALL GraPaint (X, Y, D, nC, Z(1), iLSdef, iLS)
ENDIF
IF (iLS.eq.0) RETURN ! user's choice : draw nothing
IF (Fehler.ne.'&ff') RETURN
DO iZ = 1, nZ
CALL OlfCnuG (j, 'z'//cl2(iZ), CoZ(iZ), UnZ(iZ), Fehler)
IF (Fehler.ne.'&ff') RETURN
ENDDO
! == display some text lines on the screen == !
IF (qFileNew) THEN ! display name of file
CALL GraText (file, 1)
CALL GraText (' ', 1)
ENDIF
IF (ndim.eq.2) THEN ! some info for each spectrum
aus = cr3(j)//'#'//cl3(K)
IF (iLS.lt.0) THEN
CALL GraText ('&sy='//cv2(-iLS)//aus, 1)
ELSEIF (iLS.gt.0) THEN
CALL GraText ('&li='//cv2( iLS)//aus, 1)
ENDIF
IF (nK.gt.1) THEN ! display z
DO iZ = 1, nZ
CALL NiceNum (Z(iZ), hilf, ia)
aus = CoZ(iZ)
CALL Append (aus, ' = '//hilf(1:ia)//' '//UnZ(iZ) )
CALL GraText (aus, 1)
ENDDO
ENDIF
ENDIF
CALL GraText (' ', 1) ! empty line
! == text for register == !
! head line : fname, doc, title
IF (qFileNew) THEN
CALL Compose3 (aus, file, ', '//title, ' '//doc)
CALL GraText (aus, 2)
ENDIF
! encode graphic symbol :
IF (iLS.lt.0) THEN
aus = '&sy='//cv2(-iLs )
ELSE
aus = '&li='//cv2( iLS )
ENDIF
! list of spectra, z, parameters if curve :
IF (qCurve) THEN ! print parameters (11sep91, wurde auch Zeit)
tline0 = ' ' ! head line (1/file)
tline1 = ' ' ! data line (1/spectrum)
! First 3 columns : linestyle, K, z :
tline1(2:9) = aus ! linestyle
IF (nK.gt.1) THEN ! K, z
tline1(10:12) = cl3(K)
Write(tline1(13:24), '(g12.4e2)') Z(1)
CALL Compose3 (aus, '# '//CoZ(1), '('//UnZ(1), ')')
tline0(15:80) = aus ! (1:14) remain empty
jipar = 24
nCoutmax = 18
ELSE
jipar = 12
nCoutmax = 19
ENDIF
! Following columns : curve-parameters
nCout = min0 (nCoutmax, nC) ! # parameters that can be printed
DO i = 1, nCout
! could be fine-tuned (more place if nCout<5)
ji = jipar + i*12-11
jf = jipar + i*12
IF (qFileNew) THEN ! names of parameters
c IF (qintr(i-Par(20+i))) THEN
c tline0(ji:ji) = '=' ! fix
c ELSE
c tline0(ji:ji) = '!' ! free
c ENDIF
CALL OlfCnuG (j, 'p'//cl2(i), CoP, UnP, Fehler)
tline0(ji+1:jf) = CoP
ENDIF
Write (hilf,'(g12.4e2)') Y(i)
tline1(ji:jf) = hilf
ENDDO
IF (qFileNew) CALL GraText (tline0, 2)
CALL GraText (tline1, 2)
ELSE ! no curve
IF (nK.gt.1) THEN ! name and value of z
CALL Append (aus, '# '//cl3(K))
CALL Append (aus, ' :')
DO iZ = 1, nZ
CALL NiceNum (Z(iZ), hilf, ia)
IF (iZ.gt.1) CALL Append (aus, ',')
CALL Append (aus, ' '//CoZ(iZ))
CALL Append (aus, ' = '//hilf(1:ia)//' '//UnZ(iZ) )
ENDDO
ENDIF
CALL GraText (aus, 2)
ENDIF ! qCurve
qFileNew = .false.
629 CONTINUE
ENDDO ! loop spectra
! == file-info for register == !
i = 1
71 CONTINUE
CALL OlfComLinG (j, i, line, Fehler)
IF (Fehler.ne.'&ff') RETURN
IF (line.eq.'&eoc') GOTO 79
CALL GraText (' '//line(1:lenU(line)), 2) ! comment
i = i + 1
GOTO 71
79 CONTINUE
ENDDO ! loop files
CALL GraQuit ()
END ! IdaPlot
This diff is collapsed.
This diff is collapsed.