ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_control Module Reference

This module contains abstract and concrete derived types that are required for compile-time resolution of procedures within the generic interfaces of the ParaMonte library for Linear Algebra operations.
Such procedures frequently have multiple implementations determined by the specific control flow used in the algorithm.
More...

Data Types

type  control_type
 This is an abstract derived type for constructing concrete derived types to distinguish various procedure signatures that require different forms of iterations (e.g., looping, recursion, ...).
More...
 
type  iteration_type
 This is a concrete derived type whose instances are exclusively used to request looping procedure interfaces within the generic interfaces of the ParaMonte library.
More...
 
type  recursion_type
 This is a concrete derived type whose instances are exclusively used to request recursive procedure interfaces within the generic interfaces of the ParaMonte library.
More...
 
type  selection_type
 This is a concrete derived type whose instances are exclusively used to request selection control flow within the generic interfaces of the ParaMonte library.
More...
 
type  sequence_type
 This is a concrete derived type whose instances are exclusively used to request sequence control flow within the generic interfaces of the ParaMonte library.
More...
 

Variables

character(*, SK), parameter MODULE_NAME = "@pm_control"
 
type(sequence_type), parameter sequence = sequence_type()
 This is a scalar parameter object of type sequence_type that is exclusively used to request sequence control flow within the generic interfaces of the ParaMonte library.
More...
 
type(recursion_type), parameter recursion = recursion_type()
 This is a scalar parameter object of type recursion_type that is exclusively used to request recursive procedure interfaces within the generic interfaces of the ParaMonte library.
More...
 
type(iteration_type), parameter iteration = iteration_type()
 This is a scalar parameter object of type iteration_type that is exclusively used to request looping procedure interfaces within the generic interfaces of the ParaMonte library.
More...
 
type(selection_type), parameter selection = selection_type()
 This is a scalar parameter object of type selection_type that is exclusively used to request selection control flow within the generic interfaces of the ParaMonte library.
More...
 

Detailed Description

This module contains abstract and concrete derived types that are required for compile-time resolution of procedures within the generic interfaces of the ParaMonte library for Linear Algebra operations.
Such procedures frequently have multiple implementations determined by the specific control flow used in the algorithm.

In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated.
There are several types of programming control flows including,

  1. Sequence control flow refers to performing evaluations or statement executions one after another, all serially and in the specified order.
  2. Selection control flow refers to performing evaluations or statement executions conditionally using if, unless, switch, case, or other similar programming constructs.
  3. Iteration control flow (or looping) refers to performing evaluations or statement executions repeatedly using for, while, repeat, until, or other similar programming constructs.
  4. Procedural Abstraction control flow (or subroutine call) refers to performing evaluations or statement executions by calling a sequence of procedures.
  5. Recursion control flow refers to performing evaluations or statement executions repeatedly using procedure self calls until a condition is met.
  6. Nondeterminacy control flow refers to performing evaluations or statement executions randomly from a set of predefined possible flows in the code.
  7. Concurrency control flow refers to performing evaluations or statement executions concurrently with any dependence of the individual tasks on each other.

This module contains an incomplete list of derived types that help resolve the various implementations of the same algorithms using different control flows at compile time.


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Variable Documentation

◆ iteration

type(iteration_type), parameter pm_control::iteration = iteration_type()

This is a scalar parameter object of type iteration_type that is exclusively used to request looping procedure interfaces within the generic interfaces of the ParaMonte library.

For example usage, see the documentation of the target procedure requiring this object.

See also
sequence
iteration
recursion
selection
sequence_type
iteration_type
recursion_type
selection_type
control_type


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Definition at line 259 of file pm_control.F90.

◆ MODULE_NAME

character(*,SK), parameter pm_control::MODULE_NAME = "@pm_control"

Definition at line 51 of file pm_control.F90.

◆ recursion

type(recursion_type), parameter pm_control::recursion = recursion_type()

This is a scalar parameter object of type recursion_type that is exclusively used to request recursive procedure interfaces within the generic interfaces of the ParaMonte library.

For example usage, see the documentation of the target procedure requiring this object.

See also
sequence
iteration
recursion
selection
sequence_type
iteration_type
recursion_type
selection_type
control_type


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Definition at line 198 of file pm_control.F90.

◆ selection

type(selection_type), parameter pm_control::selection = selection_type()

This is a scalar parameter object of type selection_type that is exclusively used to request selection control flow within the generic interfaces of the ParaMonte library.

For example usage, see the documentation of the target procedure requiring this object.

See also
sequence
iteration
recursion
selection
sequence_type
iteration_type
recursion_type
selection_type
control_type


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Definition at line 320 of file pm_control.F90.

◆ sequence

type(sequence_type), parameter pm_control::sequence = sequence_type()

This is a scalar parameter object of type sequence_type that is exclusively used to request sequence control flow within the generic interfaces of the ParaMonte library.

For example usage, see the documentation of the target procedure requiring this object.

See also
sequence
iteration
recursion
selection
sequence_type
iteration_type
recursion_type
selection_type
control_type


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin

Definition at line 137 of file pm_control.F90.