File: environment.rst

package info (click to toggle)
openmolcas 25.02-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 170,204 kB
  • sloc: f90: 498,088; fortran: 139,779; python: 13,587; ansic: 5,745; sh: 745; javascript: 660; pascal: 460; perl: 325; makefile: 17
file content (726 lines) | stat: -rw-r--r-- 33,069 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
Commands and environment variables
==================================

This section will describe the usage of |molcas| in an
UNIX environment.

Production jobs using |molcas| in an UNIX environment can be
performed as batch jobs.
This requires the creation of a shell script that
contains a few simple commands. Further you need to create input for
each program module that you intend to use. This section describes the
necessary steps you have to take in order to make a successful job using
|molcas|.
Input examples for a typical |molcas|
run can be found in :file:`doc/samples/problem_based_tutorials/` directory.
Also you can use some input examples
in :file:`Test/input` subdirectory.

Commands
--------

There is a command supplied with the |molcas| package, named
:command:`molcas`, that the user issue to perform a given task.
A sequence of such commands will perform the calculation requested by
the user.

.. class:: commandlist

:command:`molcas`
  This command tells which |molcas| installation will be used, and gives
  some help about usage of |molcas| command

:command:`molcas` :file:`input-file`
  This command executes a command in the |molcas| system.

:command:`molcas help` :program:`prgm`
  This command gives the list of available keywords for program :program:`prgm`.

:command:`molcas help` :program:`prgm keyword`
  This command gives description of a :program:`keyword`.

:command:`molcas help` :program:`environment`
  This command gives a list of |molcas| specific environment variables.

:command:`molcas help` :program:`basis element`
  This command gives a list of basis sets available for an :program:`element`.

The following is an example of running |molcas| by using a single input file: ::

  molcas $Project.input

An alternative way of running |molcas| as a sequence of separate calls: ::

  molcas $Project.seward.input    # Execute seward
  molcas $Project.scf.input       # Execute scf

By default, the output will go directly to the screen. It can be redirected
by using flag :command:`-f`, e.g. :command:`molcas -f water.inp` will store the output
in :file:`water.log` and :file:`water.err` files.

The default behavior of |molcas| execution can be altered by setting environment variables.

Project name and working directory
----------------------------------

When running a project, |molcas| uses the variable
:variable:`Project` giving a project name, and a scratch directory defined by
the variable :variable:`WorkDir`.
This serves the purpose of maintaining structure of the files and
facilitating automatic file mapping.

There are several ways to set up these variables.
By default, the name of the Project constructed from the name of the input file,
by removing the last suffix, e.g. for example for an input name :file:`Water.SCF.input`
the :variable:`Project` name will be :variable:`Water.SCF`.
Alternatively,
user can set environment variable :variable:`Project`, or :variable:`MOLCAS_PROJECT`.

Scratch directory can be set by environment variable :variable:`MOLCAS_WORKDIR`.
If it is set to value ``PWD``, current directory will be used. Otherwise,
it can be set to a directory name. In this case scratch area will be located
in a subdirectory :file:`$MOLCAS_WORKDIR/$Project`. It is also possible to
overwrite the value of scratch area, by setting environment variable
:variable:`WorkDir`.

* :command:`Project=...; export Project`
* :command:`WorkDir=...; export WorkDir`

|molcas| modules communicates between each other via files, located in the :variable:`WorkDir`.
The description of internal filenames and file mapping can be found at Appendix.

Input
-----

.. compound::

  When you have decided which program modules you need to use to perform your
  calculation, you need to construct input for each of these. There is no
  particular structure enforced on the input files, but it is recommended that
  you follow:

  * :file:`$Project.<prgm-name>.input`

  which is the name of the input files assumed in the sample shell script.

Preparing a job
---------------

When you prepare a job for batch processing, you have to create a shell script.
It is recommended that you use the sample shell script supplied with
|molcas| as a starting point when building your own shell script.
The following steps are taken in the shell script:

#. Define and export the |molcas| variables

   * Project (or use :variable:`MOLCAS_PROJECT`)
   * WorkDir (or :variable:`MOLCAS_WORKDIR`)

#. Issue a sequence of |molcas| commands.
#. Remove the scratch directory and all files in it.

The following is an example of a shell script. ::

  Project=HF; export Project                               # Define the project id
  WorkDir=/temp/$LOGNAME/$Project.$RANDOM; export WorkDir  # Define scratch directory
  molcas $Project.input                                    # Run molcas with input file, which
                                                           # contains inputs for several modules
  rm -r $WorkDir                                           # Clean up

The file :file:`$ThisDir/$Project.input` contains the ordered sequence
of |molcas| inputs and the EMIL interpreter will call the appropriate
programs. See :numref:`UG:sec:EMIL` for an explanation of the
additional tools available in the EMIL interpreter.

The following is an example of a shell script to be submitted for batch
execution. ::

  Project=HF; export Project                               # Define the project id
  WorkDir=/temp/$LOGNAME/$Project.$RANDOM; export WorkDir  # Define scratch directory
  molcas $Project.seward.input                             # Execute seward
  molcas $Project.scf.input                                # Execute scf
  rm -r $WorkDir                                           # Clean up

An alternative way to control the usage of the WorkDir is to use flags in molcas command:

.. class:: commandlist

:command:`-new`
  clean WorkDir before the usage

:command:`-clean`
  clean WorkDir after the usage

Note, that if you configured your working environment by using :command:`setuprc` script,
the only command you have to place into the shell script is: ::

  molcas $Project.input

.. _UG\:sec\:sysvar:

System variables
----------------

|molcas| contains a set of system variables that the user can
set to modify the default behaviour of |molcas|. Two of them
(Project and WorkDir) must be set in order to make |molcas| work at all.
There are defaults for these but you are advised not to use the defaults.

There are several ways of using |molcas| environment variables:

* These variables can be exported in your shell script ::

    export MOLCAS_MEM=512
    molcas input

* These variables can be included into |molcas| input: ::

    * begin of the input file
    >>> export MOLCAS_MEM=512

      . . .

* variables can be included directly into :command:`molcas` command in the form: ::

    molcas MOLCAS_MEM=512 input

The simplest way to set up default environment for |molcas| is
to use script :file:`setuprc`, which can be run as command
:command:`molcas setuprc`. This interactive script creates
a resource file :file:`molcasrc`, located either in :file:`$MOLCAS` or :file:`$HOME/.Molcas`
directory. The priority of these settings is: user defined settings
(e.g. in :command:`molcas` command), user resource file, |molcas| resource file.

Two flags in |molcas| command are related to resource files:

.. class:: variablelist

:variable:`-env`
  Display current |molcas| environment
  e.g. :command:`molcas -env input` will print information about environment
  variables, used during execution of the input file.

:variable:`-ign`
  Ignore resource files
  e.g. :command:`molcas -ign input` will process input file without settings,
  which are stored in :file:`$MOLCAS/molcasrc` and in :file:`$HOME/molcasrc` files.

The most important environment variables, used in |molcas|:

.. xmldoc:: <MODULE NAME="ENVIRONMENT" APPEAR="Environment" LEVEL="HIDDEN">
            %%Description:
            List of environment variables

.. class:: variablelist

:variable:`Project`
  This variable can be set in order to overwrite the default name of the
  project you are running. The default (and recommended) value of the project name is the
  name of the input file (without the file extension).

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="Project" APPEAR="Project" KIND="STRING" LEVEL="ADVANCED">
              %%Keyword: Project <advanced>
              <HELP>
              This variable can be set in order to overwrite the default name of the
              project you are running. The default (and recommended) value of the project name
              is the name of the input file (without the file extension).
              </HELP>
              </KEYWORD>

:variable:`WorkDir`
  This variable can be used to specify directly the directory where all files
  that |molcas| creates are placed. See :kword:`MOLCAS_WORKDIR` for more options.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="WorkDir" APPEAR="WorkDir" KIND="STRING" LEVEL="ADVANCED">
              %%Keyword: WorkDir <advanced>
              <HELP>
              This variable can be used to specify directly the directory where all files
              that molcas creates are placed. See MOLCAS_WORKDIR for more options.
              </HELP>
              </KEYWORD>

:variable:`CurrDir`
  This variable corresponds to the location of the input, and it is used as
  a default location for all output files, generated by |molcas| modules.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="CurrDir" APPEAR="CurrDir" KIND="STRING" LEVEL="ADVANCED">
              %%Keyword: CurrDir <advanced>
              <HELP>
              This variable corresponds to the location of the input, and it is used as
              a default location for all output files, generated by molcas modules.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS`
  This variable indicates the location of |molcas|. The default version of Molcas
  to be used is specified at file :file:`.Molcas/molcas`, located at user HOME directory.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS" APPEAR="MOLCAS" KIND="STRING" LEVEL="ADVANCED">
              %%Keyword: MOLCAS <advanced>
              <HELP>
              This variable indicates the location of molcas. The default version of Molcas
              to be used is specified at file .Molcas/molcas, located at user HOME directory.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_NPROCS`
  This variable should be used to run |molcas| code in parallel. It defines the
  number of computational units (cores or nodes) which will be used.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_NPROCS" APPEAR="MPI Processes" KIND="INT" LEVEL="BASIC">
              %%Keyword: MOLCAS_NPROCS <basic>
              <HELP>
              This variable should be used to run molcas code in parallel. It defines the
              number of computational units (cores or nodes) which will be used.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_MEM`
  .. compound::

    This environment variable controls the size (soft limit) of the
    work array utilized in the programs that offer dynamic memory.
    It is specified in Megabytes, i.e.

    :command:`MOLCAS_MEM=256; export MOLCAS_MEM`

    will assign 256MB for the working arrays.
    It is also possible to use Gb (Tb) to specify memory in Gb or Tb.

  * MOLCAS_MEM is undefined --- The default amount of memory (1024MB),
    will be allocated for the work arrays.
  * MOLCAS_MEM is defined but nonzero --- This amount of memory
    will be allocated.

  See also :kword:`MOLCAS_MAXMEM`.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_MEM" APPEAR="MOLCAS_MEM (Mb)" KIND="INT" LEVEL="BASIC">
              %%Keyword: MOLCAS_MEM <basic>
              <HELP>
              This environment variable controls the size (soft limit) of the
              work array (in Mb) utilized in the programs that offer dynamic memory.
              It is also possible to set up memory in Gb, e.g. 2Gb
              </HELP>
              </KEYWORD>

The complete list of |molcas|-related environment variables:

.. class:: variablelist

:variable:`MOLCAS_COLOR`
  By default molcas uses markup characters in the output. To overwrite, set the key to NO.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_COLOR" APPEAR="Use markup in the output" KIND="CHOICE" LIST="----,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_COLOR <advanced>
              <HELP>
              By default molcas uses markup characters in the output.
              To overwrite, set the key to NO
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_NPROCS`
  See above

:variable:`MOLCAS_THREADS`
  This variable should be used to run |molcas| code with multithreaded capabilities.
  It defines the number of threads that will be used for the multithreaded portions of the code (mostly linear algrebra library calls).

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_THREADS" APPEAR="OpenMP threads" KIND="INT" LEVEL="BASIC">
              %%Keyword: MOLCAS_THREADS <basic>
              <HELP>
              This variable should be used to run molcas code with multithreaded capabilities.
              It defines the number of threads that will be used for the multithreaded portions of the code (mostly linear algrebra library calls).
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_DEBUGGER`
  This variable can be set to the name of debugger (or another code) which will be used on top of
  molcas executables. The option is useful for tracing an error in the code

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_DEBUGGER" APPEAR="Debugger" KIND="STRING" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_DEBUGGER <advanced>
              <HELP>
              This variable can be set to the name of debugger (or another code) which will be used on top of
              molcas executables. The option is useful for tracing an error in the code
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_DISK`
  The value of this variable is used to split large files into a set of
  smaller datasets, as many as are needed (max. 20 subsets). It is specified
  in Megabytes, for instance, :command:`MOLCAS_DISK=1000; export MOLCAS_DISK`,
  and the following rules apply:

  * MOLCAS_DISK is undefined --- The program modules will ignore this
    option and the file size limit will be defined by your hardware
    (2 GBytes for 32-bit machines).
  * MOLCAS_DISK=0 (zero) --- The programs will assume a file size limit
    of 2 GBytes (200GBytes on 64-bit machines).
  * MOLCAS_DISK is defined but nonzero --- The files will be limited to
    this value (approximately) in size.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_DISK" APPEAR="MOLCAS_DISK" KIND="INT" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_DISK <advanced>
              <HELP>
              The value of this variable is used to split large files into a set of
              smaller datasets, as many as are needed (max. 20 subsets).
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_ECHO_INPUT`
  An environment variable to control echoing of the input.
  To suppress print level, set MOLCAS_ECHO_INPUT to ``NO``.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_ECHO_INPUT" APPEAR="Echo input" KIND="CHOICE" LIST="----,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_ECHO_INPUT <advanced>
              <HELP>
              An environment variable to control echoing of the input.
              To suppress print level, set MOLCAS_ECHO_INPUT to 'NO'.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_FIM`
  Activates the Files In Memory I/O layer. See :numref:`MT:sec:fim` for more details.
  *Note that this setting is available only in |molcas| compiled without Global
  Arrays.*

  .. warning::

     This feature is not available in |openmolcas|.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_FIM" APPEAR="FiM" KIND="CHOICE" LIST="----,YES" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_FIM <advanced>
              <HELP>
              Activate the Files in Memory I/O layer
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_INPORB_VERSION`
  Selects the version used for writing orbital files (`$Project.ScfOrb`, `$Project.RasOrb`, etc.).
  The value should be a version number such as ``1.0`` or ``2.2``.
  If the version is not known, the default (usually latest) version will be used.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_INPORB_VERSION" APPEAR="INPORB version" KIND="REAL" LEVEL="BASIC">
              %%Keyword: MOLCAS_INPORB_VERSION <basic>
              <HELP>
              Selects the version used for writing orbital files.
              The value should be a version number such as 1.0 or 2.2.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_KEEP_WORKDIR`
  If set to NO |molcas| will remove scratch area after a calculation.
  This setting can be overwritten by running :command:`molcas` with flag :command:`-clean`.
  Note that this does not work in a parallel environment.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_KEEP_WORKDIR" APPEAR="Keep WorkDir" KIND="CHOICE" LIST="NO" LEVEL="BASIC">
              %%Keyword: MOLCAS_KEEP_WORKDIR <basic>
              <HELP>
              If set to NO molcas will remove scratch area after a calculation.
              This setting can be overwritten by running molcas with flag -clean:

                molcas -clean input
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_LICENSE`
  An environment which specifies the directory with |molcas| license file :file:`license.dat`.
  The default value of this variable is directory :file:`.Molcas/` in user home directory.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_LICENSE" APPEAR="License Directory" KIND="DIR" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_LICENSE <advanced>
              <HELP>
              An environment which specifies the directory with molcas license file license.dat.
              The default value of this variable is directory .Molcas/ in user home directory.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_LINK`
  An environment variable to control information about linking of files.
  By default (MOLCAS_LINK is not set) only essential
  information about linking will be printed. To increase/decrease the
  print level, set MOLCAS_LINK to ``Yes``/``No``.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_LINK" APPEAR="Link information" KIND="CHOICE" LIST="YES,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_LINK <advanced>
              <HELP>
              An environment variable to control information about linking of files.
              By default (MOLCAS_LINK is not set) only essential
              information about linking will be printed. To increase/decrease the
              print level, set MOLCAS_LINK to 'Yes'/'No'.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_MAXITER`
  An environment variable to control maximum number of iterations in DO WHILE loop.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_MAXITER" APPEAR="Max Iter" KIND="INT" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_MAXITER <advanced>
              <HELP>
              An environment variable to control maximum number of iterations in DO WHILE loop
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_MAXMEM`
  An environment variable to set up a hard limit for allocated memory (in Mb).
  If is not specified, then it takes value of MOLCAS_MEM. Otherwise, the (MOLCAS_MAXMEM-MOLCAS_MEM)
  amount of RAM will be primarily used for keeping files in memory (FiM), or allocating Distributed Global Arrays.
  *Note that this setting is available only in |molcas| compiled without Global Arrays.*

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_MAXMEM" APPEAR="Max Memory" KIND="INT" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_MAXMEM <advanced>
              <HELP>
              An environment variable to set up a hard limit for allocated memory (in Mb).
              If is not specified, then it takes value of MOLCAS_MEM. Otherwise, the
              (MOLCAS_MAXMEM-MOLCAS_MEM) amount of RAM will be primarily used for keeping
              files in memory (FiM), or allocating Distributed Global Arrays. Note that
              this setting is available only in MOLCAS compiled without GA.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_MEM`
  See above.

:variable:`MOLCAS_MOLDEN`
  If MOLCAS_MOLDEN set to ``ON`` a Molden style input file will be generated regardless of the number of orbitals.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_MOLDEN" APPEAR="MOLDEN output" KIND="CHOICE" LIST="ON,OFF" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_MOLDEN <advanced>
              <HELP>
              If MOLCAS_MOLDEN set to 'ON' a Molden style input file will be generated regardless of the number of orbitals.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_NEW_DEFAULTS`
  If set to ``YES`` (case insensitive), some new default values will be activated:

  * :kword:`RICD` will be enabled by default in :program:`GATEWAY`, it can be disabled with :kword:`NOCD`.
  * The default IPEA shift in :program:`CASPT2` is set to 0.0, other values can be specified normally with the :kword:`IPEA` keyword.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_NEW_DEFAULTS" APPEAR="New defaults" KIND="CHOICE" LIST="YES,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_NEW_DEFAULTS <advanced>
              <HELP>
              If set to 'YES', activates new defaults (e.g. RICD, IPEA=0.0)
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_NEW_WORKDIR`
  If set to YES |molcas| will never reuse files in scratch area.
  This setting can be overwritten by running :command:`molcas` with flag :command:`-old`:
  :command:`molcas -old input`.
  Note that this does not work in a parallel environment.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_NEW_WORKDIR" APPEAR="Use new WorkDir" KIND="CHOICE" LIST="YES" LEVEL="BASIC">
              %%Keyword: MOLCAS_NEW_WORKDIR <basic>
              <HELP>
              If set to YES molcas will never reuse files in scratch area.
              This setting can be overwritten by running molcas with flag -old:

                molcas -old input
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_OUTPUT`
  This variable can alter the default directory for extra output files,
  such as orbitals files, molden files, etc.
  If set, |molcas| will save output files to the specified directory.
  The directory name can be set in the form of absolute PATH, or
  relative PATH (related to the submit directory).
  A special value ``WORKDIR`` will keep all output files in WorkDir.
  A special value ``NAME`` will create a subdirectory with a name of Project.
  If the variable is not set, all output files will be copied or moved
  to the current directory. Default value can be forced by MOLCAS_OUTPUT=PWD.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_OUTPUT" APPEAR="Output Directory" KIND="CHOICE" LIST="????,PWD,?DIR,NAME,WORKDIR" LEVEL="BASIC">
              %%Keyword: MOLCAS_OUTPUT <basic>
              <HELP>
              This variable can alter the default directory for extra output files,
              such as orbitals files, molden files, etc.
              If set, molcas will save output files to the specified directory.
              The directory name can be set in the form of absolute PATH, or
              relative PATH (related to submit directory)
              A special value 'WORKDIR' will keep all output files in WorkDir.
              A special value 'NAME' will create a subdirectory with a name of Project.
              If the variable is not set, all output files will be copied or moved
              to the current directory.
              Default value can be forced by MOLCAS_OUTPUT=PWD
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_PRINT`
  MOLCAS_PRINT variable controls the level of output. The value could be numerical or mnemonic:
  SILENT (0), TERSE (1), NORMAL (2), VERBOSE (3), DEBUG (4) and INSANE (5).

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_PRINT" APPEAR="Print level" KIND="CHOICE" LIST="----,0:SILENT,1:TERSE,2:NORMAL,3:VERBOSE,4:DEBUG,5:INSANE" LEVEL="BASIC">
              %%Keyword: MOLCAS_PRINT <basic>
              <HELP>
              MOLCAS_PRINT variable controls the level of output. The value could be numerical or mnemonic:
              SILENT (0), TERSE (1), NORMAL (2), VERBOSE (3), DEBUG (4) and INSANE (5).
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_PROJECT`
  If set to value NAME, |molcas| will use the prefix of the input file
  as a project name. Otherwise, it set a project name for the calculation.
  If set to the value NAMEPID, the Project name still will be constructed
  from the name of input file, however, the name of scratch area will
  be random.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_PROJECT" APPEAR="Project Policy" KIND="CHOICE" LIST="????,NAME,NAMEPID" LEVEL="BASIC">
              %%Keyword: MOLCAS_PROJECT <basic>
              <HELP>
              If set to the value NAME, molcas will use the prefix of the input file
              as a project name,
              If set to the value NAMEPID, the Project name still will be constructed
              from the name of input file, however, the name of scratch area will
              be random
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_PROPERTIES`
  If MOLCAS_PROPERTIES is set to ``LONG`` properties with the individual MO contributions will be listed.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_PROPERTIES" APPEAR="Property output" KIND="CHOICE" LIST="SHORT,LONG" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_PROPERTIES <advanced>
              <HELP>
              If MOLCAS_PROPERTIES is set to 'LONG' properties with the individual MO contributions will be listed.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_RANDOM_SEED`
  Set to an integer to provide a fixed seed for operations that use a random number.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_RANDOM_SEED" APPEAR="Random number seed" KIND="INT" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_RANDOM_SEED <advanced>
              <HELP>
              Set to an integer to provide a fixed seed for operations that use a random number.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_REDUCE_PRT`
  If set to NO, print level in DO WHILE loop is not reduced.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_REDUCE_PRT" APPEAR="Verbose input in do loops" KIND="CHOICE" LIST="----,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_REDUCE_PRT <advanced>
              <HELP>
              If set to NO, print level in DO WHILE loop is not reduced
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_REDUCE_NG_PRT`
  If set to NO, print level in :program:`numerical_gradient` loop is not reduced.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_REDUCE_NG_PRT" APPEAR="Verbose input in numerical_gradient" KIND="CHOICE" LIST="----,NO" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_REDUCE_NG_PRT <advanced>
              <HELP>
              If set to NO, print level in numerical_gradient is not reduced.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_SAVE`
  This variable can alter the default filenames for output files.
  If not set (default), all files will overwrite old files.
  If set to ``INCR`` all output files will get an incremental
  filenames.
  If set to ``ORIG`` --- an existent file will be copied with
  an extension ``.orig``

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_SAVE" APPEAR="Save files as" KIND="CHOICE" LIST="----,INCR,ORIG" LEVEL="BASIC">
              %%Keyword: MOLCAS_SAVE <basic>
              <HELP>
              This variable can alter the default filenames for output files.
              If not set (default), all files will overwrite old files.
              If set to 'INCR' all output files will get an incremental
              filenames.
              If set to 'ORIG' - an existent file will be copied with
              an extension '.orig'
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_TIME`
  If set, switch on timing information for each module

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_TIME" APPEAR="Timing" KIND="CHOICE" LIST="----,YES" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_TIME <advanced>
              <HELP>
              If set, switch on timing information for each module
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_TIMELIM`
  Set up a timelimit for each module (in seconds). By default, the maximum
  execution time is set to unlimited. *Note that this setting is available only
  in MOLCAS compiled without Global Arrays.*

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_TIMELIM" APPEAR="Time Limit" KIND="INT" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_TIMELIM <advanced>
              <HELP>
              Set up a timelimit for each module (in seconds). By default, the maximum
              execution time is set to unlimited. Note that this setting is available only
              in MOLCAS compiled without Global Arrays.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_TRAP`
  If set to OFF |molcas| modules will continue to be executed,
  even if a non-zero return code was produced.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_TRAP" APPEAR="Trap on Error" KIND="CHOICE" LIST="----,OFF" LEVEL="ADVANCED">
              %%Keyword: MOLCAS_TRAP <advanced>
              <HELP>
              If set to OFF molcas modules will continue to be executed,
              even if a non-zero return code was produced.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_VALIDATE`
  If set to YES, the input for each module will be validated against the documented syntax,
  and the calculation will stop if it does not pass. If set to CHECK, the input will be
  validated, but the calculation will continue, although the program itself may stop.
  If set to FIRST, the whole input file will be validated prior to the calculation.

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_VALIDATE" APPEAR="Validate input" KIND="CHOICE" LIST="----,YES,CHECK,FIRST" LEVEL="BASIC">
              %%Keyword: MOLCAS_VALIDATE <basic>
              <HELP>
              If set to YES, the input for each module will be validated against the documented syntax,
              and the calculation will stop if it does not pass. If set to CHECK, the input will be
              validated, but the calculation will continue, although the program itself may stop.
              If set to FIRST, the whole input file will be validated prior to the calculation.
              </HELP>
              </KEYWORD>

:variable:`MOLCAS_WORKDIR`
  A parent directory for all scratch areas. It can be set to an
  absolute PATH (recommended), to a relative PATH, or to a special value PWD
  (to use current directory for scratch files)

  .. xmldoc:: <KEYWORD MODULE="ENVIRONMENT" NAME="MOLCAS_WORKDIR" APPEAR="Top WORKDIR" KIND="CHOICE" LIST="?DIR" LEVEL="BASIC">
              %%Keyword: MOLCAS_WORKDIR <basic>
              <HELP>
              A parent directory for all scratch areas. It can be set to an
              absolute PATH (recommended), to a relative PATH, or to a special value PWD
              (to use current directory for scratch files)
              </HELP>
              </KEYWORD>

User can customize his installation by adding MOLCAS environment variable into :file:`molcasrc` file.

Another way of customizing |molcas| is to use prologue and epilogue scripts. If user created a file
:file:`prologue` in :file:`$HOME/.Molcas` directory it will be executed (as :command:`./prologue`) before |molcas| calculation
starts. :file:`epilogue` in :file:`$HOME/.Molcas` directory will be executed at the end of calculation.
Files :file:`module.prologue` and :file:`module.epilogue` contains commands executing before and after
each executable molcas module. These files may use internal |molcas| variables, such as
:variable:`$Project`, :variable:`$WorkDir`, :variable:`$MOLCAS_MEM`, etc. Note that prologue/epilogue scripts should be executable.
For debug purposes, the location of prologue and epilogue files can be set by :variable:`$MOLCAS_LOGUE_DIR` variable.

Example:

:file:`prologue`: ::

  echo Calculation of $Project input will start at `date`

:file:`module.prologue`: ::

  echo Running module $MOLCAS_CURRENT_PROGRAM at $WorkDir

.. xmldoc:: </MODULE>