|
|
|
|
![]() |
|
|
|
About McStas Documentation |
/*******************************************************************************
*
* McStas, neutron ray-tracing package
* Copyright (C) 1997-2008, All rights reserved
* Risoe National Laboratory, Roskilde, Denmark
* Institut Laue Langevin, Grenoble, France
*
* Documentation: CHANGES
*
* %Identification
* Written by: KN, KL, PEO, EF, PW
* Date: 1997
* Origin: Risoe, ILL, ANSTO
* Release: McStas 1.12
* Version: $Revision: 1.1 $
* Modified by: KN, October 26, 1998 : initial release 1.0
* Modified by: KN, March 31, 1999 : release 1.1
* Modified by: KN, January 31, 2000 : release 1.2
* Modified by: KN, May 18, 2000 : release 1.3
* Modified by: KN, July 28, 2000 : release 1.4
* Modified by: KN, PEO, March 16, 2001: release 1.4.1
* Modified by: PEO, EF, October, 10th, 2001: release 1.5
* Modified by: PW, EF, May 19th 2003: version 1.7
* Modified by: PW, EF, March 4th 2004: version 1.8
* Modified by: PW, EF, November 16th 2005: version 1.9
* Modified by: PW, EF, March 29th 2006: version 1.9.1
* Modified by: PW, EF, December 4th 2006: version 1.10
* Modified by: PW, EF, July 3rd 2007: version 1.11
* Modified by: PW, EF, EK May 8th 2008: version 1.12
*
* This file is part of McStas version 1.12, released May 8th, 2008.
* It gives a 'changes' list from the beginning of the project
*
*******************************************************************************/
Changes in McStas v1.12, May 8th, 2008
Metalanguage
- New %include "instr" mechanism to include one instrument in another. (Useful for independent
build-up of e.g. primary and secondary spectrometer. Or easily see the effect of moving an instrument
to a different beamport or facility!) See the manual for details.
- When applying the WHEN keyword, an applied EXTEND %{ %} block will only be active if the WHEN
returns 'true'.
- Please take care when combining WHEN, GROUP and EXTEND %{ %} - see the manual.
Runtime
- Fix of a limiting case focusing problem reported to neutron-mc by George Apostolopoulos.
( See http://mailman.risoe.dk/pipermail/neutron-mc/2007q4/002915.html )
Components
- When using the Virtual_input type components, --ncount is always set to an integer multiplum
(repeat_count) of the number of events in the file. See also related remark about MPI below.
- New component: MirrorElli.comp, elliptical mirror. Contributed by Sylvain Desert, LLB
- New component: MirrorPara.comp, parabolic mirror. Contributed by Sylvain Desert, LLB
- Single_crystal validation still ongoing, but has progressed: The algorithm seems OK, but is to some
extent not in sync with the documentation. New option to specify reciprocal space vectors directly.
(before only real space definitions were possible)
- Most monitors now allow to 'not propagate' the neutron, i.e. not influence the beam. Parameter name
is 'restore_neutron'.
Example instruments
- ILL_H25_IN22_sample/_resolution.instr (CRG instrument @ ILL) by E. Farhi / P. Willendrup
- Incoherent_Test.instr - instrument to compare incoherent scattering from the different sample comps
(V_samle, PowderN, Single_crystal, Isotropic_sqw). More instruments of this type planned (compare
guides etc.), P. Willendrup / E. Knudsen / A. Daoud-Aladine
- FocalisationMirrors.instr - test instrument for MirrorElli and MirrorPara, Sylvain Desert, LLB
- PSI_DMC.instr, Powder Diffractometer, PSI, L. Keller / U. Filges / P. Willendrup
Datafiles
- 'Bugfix', some of the provided .laz files did not have proper unit for |F2|.
Tools
- Support for per-user mcstas_config.perl file, located in $HOME/.mcstas/ . This folder is also the default
location of the 'host list' for use with MPI or gridding, simply name the file 'hosts'.
- mcgui Save Configuration for saving chosen settings on the 'Configuration options' and 'Run dialogue'.
- Possibilty to run MPI or grid simulations by default from mcgui.
- When scanning parameters, mcrun now terminates with a relevant error message if one or more scan steps
failed (intensities explicitly set to 0 in those cases).
- When running parameter optimisations, a logfile (default name is "mcoptim_XXXX.dat" where XXXX is a
pseudo-random string) is created during the optimisation, updated at each optim step.
- We now provide syntax-highlighting setup files for vim and gedit editors.
Output formats
- Rudimentary support for GNUPLOT when plotting with mcplot. Data file format is standard McStas/PGPLOT.
Platform support
- Mac OS X 10.3 Panther (ppc), 10.4 Tiger (pcc/intel), 10.5 Leopard (ppc/intel)
- Windows XP, Windows Vista (Now with a recent perl version; 5.10 plus various fixes). New feature on Windows:
Simulations _always_ run in the background, freeing mcgui for other work.
- "Any" Linux - reference platforms are Ubuntu 8.04 (and earlier) and Debian 4.0 (and earlier). We have also tested
Fedora 8, OpenSuSE 10.3 and CentOS 4 releases recently.
- FreeBSD (FreeBSD release 6.3 and its cousin DesktopBSD 1.6 recently tested)
- SUN Solaris 10 (Intel tested, Sparc probably OK)
- Plus probably any UNIX/POSIX type environment with a bit of effort...
Parallelisation
- Improved stability of MPI simulations by addition of an 'MPI barrier' (reduces probability of nodes beeing 'out of sync'.
- On Windows, an 'mpicc.bat' script has been added for easier setup of McStas with gcc and MPI (We recommend MPICH).
- Mac OS X 10.5 Leopard is shipped with built-in support for MPI (OpenMPI). No need to install extra packages.
- Use of 'virtual sources' is now supported on MPI clusters. (If running on N nodes, all neutron events will be processed
on each of the N nodes - implicit repetition N times of the source contents.)
- OpenMP threading support
- Much improved gridding support (via ssh). Ready for heterogenous systems, e.g. mixed operating systems and hardware
types! (Requires -c compile flag for mcrun or equivalent setting in mcgui.) The only requirement is ssh client on the machine
where the grid run is started, plus ssh daemon and c-compiler (e.g. gcc or simply cc) on the remote machines. Files in the
current dir are transparently copied back and forth, causes a substantial network traffic in some cases. Output data from the
nodes are automatically merged using mcformat. Just as efficient as MPI without any library dependencies at all. Make use
of all processer cores in your machine, simply choose to 'grid'. Windows 'client' host OK, we autodetect ssh and scp binaries
from the Putty package.
Various
- A number of minor bugs ironed out, both in components, runtime code and tools.
- From release 1.12, McStas is GPL 2 only. The debate on the internet about the future GPL 3 license suggests that this license
might have implications on the 'derived work', hence have implications on what and how our users use their McStas simulations
for. To protect user freedom, we will stick with GPL 2.
WARNING: The 'dash' shell which is used as /bin/sh on some Linux system (Including Ubuntu 8.04) makes the 'Cancel' and 'Update'
buttons fail in mcgui. Solutions:
a) If your system is a Debian or Ubuntu, please dpkg-reconfigure dash and say 'no' to install dash as /bin/sh
b) If you run another Linux with /bin/sh beeing dash, please install bash and manually change the /bin/sh link to point at bash.
Changes in McStas v1.11, July 3rd, 2007
Metalanguage
- New SPLIT keyword for improving statistics. WARNING: Follow instructions in the documentation for safe
use of the SPLIT keyword.
Components
- Source_adapt.comp, additions by Aaron Percival which allows to specify a flat wavlength distibution.
- Single_crystal.comp, warning NOT to use this component as a monochromator (bug fix/validation under way).
- PowderN.comp, can now be used in concentric mode, i.e. for modelling sample surroundings (cryostat, container..).
- Tunneling_sample.comp (new) Double-cylinder shaped all-incoherent scatterer with elastic, quasielastic (Lorentzian)
and tunneling (sharp) components. No multiple scattering. Absorbtion included. By Kim Lefmann
- TOF2E_monitor.comp (new) TOF-sensitive monitor, converting to energy. By Kim Lefmann
Example instruments
- New ILL_H15_IN6 and ILL_H142_IN12 instruments by Emmanuel Farhi are included.
- Histogrammer.instr - see the 'Tools' section
- New ESS_IN5_reprate.instr Instrument for simulating IN5-TYPE (cold chopper) multi-frame spectrometer at ESS LPT.
(Also example instrument for Tunneling_sample.comp.) By Kim Lefmann
Datafiles
- Reflectivity curves from Swiss Neutronics (more work done, available in the next McStas release).
- More Sqw tables for use with the Isotropic_Sqw component.
Tools
- PGPLOT output format (original McStas format) is now possible on Windows. A pgplot/pgperl installation
is included in a standard McStas Win32 installation.
- New mcdaemon for visualisation of intermediate simulation results (obtained by sending USR2 signal to a
running simulation or by using the Progress_bar component with flag_save=1).
- Improvements to mcgui:
* New tool menu with hooks to mcformat, mcdaemon and mcplot
* Possibility for auto-setup of MPI ssh keys
* Possibility to run the McStas editor in 'detached' mode, hence available whilst a simulation is running
- Histogrammer.instr: Special histogramming instrument for visualisation of virtual source files (Virtual_input,
VitESS, MCNP and Tripoli formats)
Output formats
- NeXus output format possible. To use this feature, HDF and NeXus libraries must be available
and functional on your system before installing McStas from source. (In case of a binary package,
you MUST recompile the McStas software.) To enable a McStas build with NeXus, run
./configure --with-nexus.
Platform support
- Mac OS X is now considered a supported platform. For now, no actuall installer program
is given, but all needed software has been packed together with easy to follow instructions.
Test of the instructions have been performed on Mac OS X 10.4 Tiger on both Intel and PPC
hardware.
- McStas now comes in a Debian binary package (.deb), tested to work on Debian and Ubuntu systems. The debian
package provides McStas, pgplot and pgperl and have dependencies for the perl, perl-tk, gcc, libg2c0, pdl and libc6-dev
packages.
Parallelisation
- The threading mechanism for parallelisation has been removed from McStas since it caused too many problems. For
parallelisation on single machines (e.g. modern dual-core processors) or clusters, MPI (MPICH) is the recommended solution.
The McStas team members routinely run developer machines and clusters using MPI.
Intel C compiler
- The documentation now includes instructions to run McStas with the Intel C compiler (available on Windows,
Linux x86 and Mac OS x86 systems). Typically, a performance gain of 2 is found relative to gcc -O2. Relevant
compiler flags are:
MCSTAS_CFLAGS="-g -O2 -wd177,266,1011,181"
export MCSTAS_CC="icc"
- To run McStas with MPI and the Intel C compiler, you may have to edit your mpicc shell script to set:
CC="icc"
Various
- A standard McStas source package now works directly within the DANSE framework.
WARNING: The 'dash' shell which is used as /bin/sh on some Linux system (Including Ubuntu 7.04) makes the 'Cancel' and 'Update'
buttons fail in mcgui. Solutions:
a) If your system is a Debian or Ubuntu, please install our Debian package which requests automatic removal of 'dash'.
b) If your /bin/sh is dash, please install bash and manually change the /bin/sh link to point at bash.
Changes in McStas v1.10, Dec 4, 2006
General
- This release is a major step forward for McStas in terms of support for polarisation.
Peter Christiansen who worked at Risoe March-October 2006 was the main workforce
behind this new functionality, backed by funding from ISIS, work by Rob Dalgliesh at
ISIS and inspiration from the VitESS and NISP packages. As this is the first release
with polarisation support, the methods and algorithms implemented will certainly be
developed further. Hence, documentation of the functionality has been placed in an
appendix to the manual.
Polarisation users: Please give us feedback for further development!
Items marked by (p) below relate to the new polarisation support.
- New keywords for the meta language improves support for e.g. description of sample
enviroments.
- A method for automatic optimisation has been implemented, e.g. for achieving maximum flux
at the sample position (any quantity measured by a McStas monitor can be optimised) as a
function of simulation parameters.
- Bugfixes in many different areas.
Documentation
- Manual and component manual slightly updated according to adding/modification of components
and functionality. New appendix on the polarisation features. (p)
Kernel
- New WHEN keyword, conditional use of components,
COMPONENT MyComp=Component(...) WHEN (condition) AT
- New JUMP keyword, possibility to iterate a given component a number of times (multiple
scattering) or for 'teleportation' to a given component. (USE WITH CAUTION)
- Improved COPY keyword with parameter substitution (Make a copy of an other component
instance with a few parameters changed)
- Spin propagation algorithm (When magnetic field is set 'on', the central propagation
routines also handle Larmor precession in the field) (p)
- Handeling of analytical B-fields (p)
Tools
- New 'merge/convert' tool mcformat: Convert between McStas output formats and merge cluster
node datasets into one dataset.
- TOF mode for mcdisplay (Statistical chopper acceptance diagrams generated from the simulated
neutron rays. Currently only supported on Unix systems with PGPLOT.)
- Optmisation support in mcrun/mcgui using Perl::Amoeba (se description above)
- POSIX threading on multi-core processors (BEWARE, performance is generally better using MPI)
- mcgui: Note that if you experience crashes when starting/running GNOME/Gtk2 applications,
update your perl-Tk installation. Two ways to do this:
1) Get the tarball from http://www.mcstas.org/download/Tk-804.027_gtk2_patch.tar.gz and
install using 'perl Makefile.PL && make && make install'.
2) Do a 'make tk' in the McStas unpacked McStas source directory. This will download and
install the tarball into your McStas system directory.
Components
- Monochromator_pol.comp - Polarising monochromator/analyzer (p)
- Pol_bender.comp - Polarising bender (p)
- Pol_mirror.comp - Polarising mirror (p)
- Pol_guide_vmirror.comp - Guide with semi-transparent, polarising mirror (p)
- Pol_simpleBfield.comp - Numerical precession in analytical B-fields (p)
- 3 Polarisation monitors - MeanPolLambda_monitor.comp, PolLambda_monitor.comp
Pol_monitor.comp (p)
- PSD_Detector.comp - Physical detector - comes with many gas lookup tables
(Contrib: Thorwald van Vuure, ILL)
- Virtual_mcnp_*.comp - MCNP event file handeling
(Contrib: Chama Hennane, ENSIMAG and Emmanuel Farhi, ILL)
- Source_multi_surfaces.comp - Source comp with multiple surface areas with individual
spectrums
(Contrib: Ludovic Giller, EPFL and Uwe Filges, PSI)
- multi_pipe.comp - Defines a 'grid' of slits (focusing device)
(Contrib: Uwe Filges, PSI)
- Exact_radial_coll.comp - Radial collimator comp, exact model
(Contrib: Roland Schedler, HMI)
- FermiChopper_ILL.comp - Fermi Chopper comp with optional supermirror coated blades.
(Contrib: Helmut Schober, ILL)
- V_sample enriched with quasi-elastic features (Kim Lefmann)
Example Instruments
- TAS frontend with reciprocal space (hkl) calculator (Emmanuel Farhi)
- Example instruments for polarisation comps (p)
- QUENS_test.instr (Test of new quasi-elastic features V_sample)
Installation
- Much easier installation on Windows, single executable file with all support applications
is now available. Simply click 'next' alle the way and you are done.
- PGPLOT and Scilab installation help tools on Linux systems
WARNINGS (Almost identical to those from release 1.9.1)
- Because of rapid changes in the support software for McStas, the current release has support
for only some releases of:
* Scilab (Win32 and Unix) - pick release 4.0 if available or pick release 3.0 from , e.g. from
http://www.scilab.org/download/index_download.php?page=oldReleases.html
(Automatically included in the Win32 .exe installer and Linux Scilab installer)
* Perl (Win32) - on Windows we only support Perl 5.6 - pick
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi
(Automatically included in the Win32 .exe installer)
* If you are running Unix with GNOME/Gtk2 applications, you may experience problems with mcgui
crashing, please install updated perl-Tk from http://www.mcstas.org/download
Changes in McStas v1.9.1, Mar 29, 2006
General
- Update release, mainly bugfixes plus a few other things
Documentation
- Component manual slightly updated according to adding/modification of components.
Tools
- mcgui: A few bugfixes. Note also that if you experience crashes when starting/running
GNOME/Gtk2 applications, update your perl-Tk installation. Two ways to do this:
1) Get the tarball from http://www.mcstas.org/download/Tk-804.027_gtk2_patch.tar.gz and
install using 'perl Makefile.PL && make && make install'.
2) Do a 'make tk' in the McStas unpacked McStas source directory. This will download and
install the tarball into your McStas system directory.
Components
- DiskChopper.comp - new disc chopper component. Chopper.comp made obsolete.
See mcdoc page / component manual for further details.
- Guide.comp - reads reflectivity tables from disk.
- Isotropic_Sqw - minor bugfixes, validated against PowerN, V_sample, etc.
- PowderN - validated against Isotropix_Sqw, Squires, experimental data.
WARNINGS
- Because of rapid changes in the support software for McStas, the current release has support
for only some releases of:
* Scilab (Win32 and Unix) - pick release 4.0 if available or pick release 3.0 from , e.g. from
http://www.scilab.org/download/index_download.php?page=oldReleases.html
* Perl (Win32) - on Windows we only support Perl 5.6 - pick
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi
* If you are running Unix with GNOME/Gtk2 applications, you may experience problems with mcgui
crashing, please install updated perl-Tk as noted above.
Changes in McStas v1.9, Nov 16, 2005
General
- To indicate the collaborative nature of the McStas package, the main website
URL does no longer belong to Risoe or ILL but is http://www.mcstas.org.
- The package has been strengthened by the presence of Klaus Lieutenant (former
captain of Vitess, HMI) at ILL. He has focused a lot on validation and testing
of the package, giving very important input and done very valuable work.
- To help us in the fight against bugs, a BUGZILLA system has been set up for users
to report their suggestions and problems. The system is available at the URL
http://www.mcstas.org/McZilla .
- The VnCS (Virtual neutron Code Sharing) agreement has been signed by the leaders
of the Vitess and McStas software packages to formally support closer collaboration
and sharing of code between the packages. At least one component (Vitess_ChopperFermi)
now works with both packages, work done by Klaus Lieutenant and Geza Zsigmond.
- Many big and small BUGS ellimnated!
- First attempt at "concentric components" (sample environment). See Isotropic_Sqw in
the 'Components' section below.
Documentation
- With this release, the component manual has finally been updated! Major work has
been put into this by especially Kim Lefmann and Emmanuel Farhi. The user manual
has also been revised, but not as intensively.
- Improvements to tutorial/teaching material as result of Copenhagen University course on
neutron scattering, given by Kim Lefmann and Peter Willendrup. The idea is that when
improved further, the full simulation part of the course can serve as an extended
tutorial for McStas. In the package, projects on virtual experiments at DMC, RITA-2 and
SANS-2 at PSI is included.
Tools
- A web frontend is now available for McStas, check it out at http://www.mcstas.org/webfront .
Currently it is not actually part of the package, may become so in a near future release.
- On Unix systems, mcdaemon is a tool to periodically send -USR2 signals (save) to running
simulation processes. Is in an early state but should work okay, but not documented in the
user manual. Replots intermediate data.
- mcgui has been intensively revised, many annoyances have been removed and features adjusted
for easier use.
Components
- For simplicity, a number of components (especially monitors and sources) have been merged.
This for example means that the Source_simple replaces the former Source_flat* components.
Fewer duplications of code => smaller risk of old bugs surviving in the code.
- PowderN: General powder sample component, replaces the simpler Powder1 and Powder2 components,
has a very flexible system to read crystallographic data for powder line description. Is
in the process of beeing validated against data from DMC@PSI. The code itself and the
validation of it is the result of collaboration between mainly Peter Willendrup from the
McStas team and Laurent Chapon (ISIS), Uwe Filges (PSI) and Lukas Keller (PSI). A validation
paper will be presented at ICNS, Sydney.
- Isotropic_Sqw: Originally work for the Ph.D. thesis of V. Hugouvieux, ILL. Extended and
validated intensively by Emmanuel Farhi, ILL. It handles elastic and inelastic scattering
for both coherent and incoherent processes, with secondary absorption and multiple scattering.
The code has been validated against PowderN and V_sample. It comes with the same flexible
system as PowderN to read data files, including crystallographic data for powder line
description. Moreover, it may be used to describe concentric geometries in order to model
sample environments.
- Vitess_ChopperFermi: Originally work for Vitess by Geza Zsigmond, now PSI. Validated and
adapted for use with McStas by Klaus Lieutentant, ILL in the frame of the VnCS agreement.
- TOFRes_sample: time-of-flight version of the Res_sample component. Written by Kim Lefmann,
Risoe. Will be merged with the res_sample component in next release.
- The full suite of Fermi Choppers have been tested intensively by Klaus Lieutentant, partly
inspired by the work of ILL stagiere Rebecca Peacock.
WARNINGS
- Because of rapid changes in the support software for McStas, the current release has support
for only some releases of:
* Scilab (Win32 and Unix) - pick release 3.0 from , e.g. from
http://www.scilab.org/download/index_download.php?page=oldReleases.html
* Perl (Win32) - on Windows we only support Perl 5.6 - pick
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi
Changes in McStas v1.8, Mar 4, 2004
License
- McStas is now GPL software. Note that generated code, output data and papers
based on these is not considered "derived work" but merely normal usage of the
software package.
- The McStas software package now includes a re-distribution of the plotlib
package for Scilab, (http://www.dma.utc.fr/~mottelet/myplot.html), courtesy of
Stephane Mottelet (stephane.mottelet@dma.utc.fr). Plotlib is beeing distributed
using a BSD like license. Plotlib needs not be precompiled anymore.
- McStas now uses the Perl CPAN module Proc::Simple on unix platforms. Proc::Simple
is distributed using the Perl artistic license.
General
- Nightly CVS builds of McStas are now available to the public from
http://mcstas.risoe.dk/cvs (optionally use the mcsync script to get these)
NOTE: The CVS builds are not considered 100% stable, you can count on errors
in there, but you also get the newest stuff.
Installation
- Improved installation and build scripts. NOTE: The new version is INCOMPATIBLE
with Win32 releases older than Windows 2000
- Automatic detection of plotting backend, (make config)
- Test procedure (make test)
Kernel (i.e. the 'mcstas' program)
- a PREVIOUS keyword has been implemented, for referencing e.g. position placement
to upsteam components.
- improvements to runtime randvec_target_rect functions
- Updated Mersenne Twister random number generator
Tools
- Various bugfixes, especially on the Win32 platform and RedHat 9 specific stuff
- mcgui now includes an option to 'scan' instrument parameters (previously only
possible using mcrun.pl.
- mcconvert.pl script has been added to the distribution, converts between
Matlab and Scilab type output. Cyclic conversion, e.g. Matlab->Scilab->Matlab
is not supported.
- mcplot opens scan steps with Matlab/Scilab backends
- mcrun now has support for Matlab/Scilab backends, built in test procedure
(mcrun --test), poor man's grid computing - see the manual for information on
how to use this.
- mcdoc support for instrument headers, support for the built in tutorial
- Improved tutorial built into the gui tools
- editor, various improvements (line numbers etc.)
Instruments
- mcgui now has a special Neutron Site menu (auto generated) to allow distribution
of instruments
- instruments can now have default input values
- several contributed / new instruments, have a look in your examples/ folder
Components
- New components:
$ Official components
- Sans_spheres, a sample for small angle neutron scattering
- Powder2, a two ring powder sample
- Phonon_simple, a phonon scattering sample
- Guide_gravity improved
$ Contributed components
- Guide_tapering, guide with elliptical/parabolic/general tapering
(Uwe Filges)
- ISIS_moderator, (Stuart Ansell and Dickon Champion)
- Guide_curved (Ross Stewart)
Changes in McStas v1.7, Jan 17, 2003
Kernel (i.e. the 'mcstas' program)
- components may have a SHARE section, which is imported only once per type
of component. It has the same role as DECLARE, but only once.
- the component files may have some %include inside '%{ }%' C DECLARE or SHARE
blocks. The files to include are searched locally, and then in the library.
If an extension is found, just the specified file is included, else both
.h and .c are embedded if the --no-runtime has not been specified.
The instrument files can also embed external files, both in C blocks
and in the instrument parts (DECLARE, etc...) as in previous releases.
- The instrument and components may have char* setting parameters. For
instruments, their length is limited to 1024 chars.
- The FINALLY section, that was executed at the end, has been split into
still the FINALLY, and a new SAVE section. This latter is executed
at simulation end (just before the FINALLY), but also each time an
intermediate save is required (e.g. a 'kill -USR2
|
|||||
| ||||||