Source Files

FileDescription
pic.f90

the main pic module interface: versions, banners, random quotes etc will go here

pic_ansi.f90

ANSI escape sequences, key decoding and flicker-free frame composition.

pic_array.f90

pic array contains L0.5 BLAS level routines, as in things that could be use in lieu of blas if you don’t have it but if you do, please don’t use these routines

pic_array_hash.f90

State hashing of whole intrinsic arrays, for checkpoint validation and cross-run comparison.

pic_ascii.f90

This file contains the module that handles all ASCII related business

pic_cli.f90

Command line parsing: declare the interface, then read it.

pic_clock.f90

Monotonic elapsed time and wall-clock date and time.

pic_command_line.f90

The pic_command_line.f90 file will contain all routines that will interact with the command line

pic_constants.f90

all things constants, physical, chemical, etc

pic_csr.f90

Compressed sparse row (CSR) matrix storage and the core CSR kernels.

pic_error.F90

Error handling module for pic Provides a unified error type to replace stat/errmsg pairs Enhanced with stack trace support for better debugging

Read more…
pic_fixed_array.f90

Bounded, fixed-capacity arrays with no heap allocation in the hot path. The Fortran analogue of C++’s std::inplace_vector: push/pop/size semantics on top of storage that lives entirely inside the object.

pic_flop_rate.f90

flop rate handler modules

pic_flop_recorder.f90

flop recorder

pic_format.f90

Deterministic number-to-string formatting.

Read more…
pic_global_definitions.f90

this is an experimental file that contains definitions that will be uses across the program, for example input/output units that PIC will use across things.

pic_graph.f90

Graph traversal and shortest-path algorithms over CSR adjacency.

pic_hash_32bit.f90

Contains the 32 bit hashing routines

pic_hash_32bit_fnv.f90

FNV_1_HASH and FNV_1A_Hash are translations to Fortran 2008 of the FNV-1 and FNV-1a hash functions of Glenn Fowler, Landon Curt Noll, and Phong Vo, that has been released into the public domain. Permission has been granted, by Landon Curt Noll, for the use of these algorithms in the Fortran Standard Library. A description of these functions is available at https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function.

Read more…
pic_hash_map.f90

Insertion-ordered hash map with character keys and 64-bit integer values.

pic_heap.f90

Binary heap / priority queue with stable (FIFO) tie-breaking.

pic_helpers.f90

General helpers

pic_io.f90

this file contains “helper” routines, for example printing a set amount of x characters to creates tables, etc.

pic_knowledge.f90

the gathered knowledge of the species

pic_logger.f90

the pic_logger.f90 is the base file that defines the logger function this is heavily inspired by the logger from the standard library but with some key changes for my purposes. The logger will be the way in which the code interacts with the output to console and files

pic_math.f90

Scalar numeric utility functions: range clamping, range checking, and approximate floating-point equality.

pic_optional.f90

Optional value handling module

pic_profiler.F90

Portable profiler with NVTX range support

Read more…
pic_pure_logger.f90

pic_pure_logger.f90 provides a pure-compatible logger for use inside pure functions and subroutines. Since I/O is forbidden in pure contexts, messages are cached into a log_buffer_type that must be flushed by the caller once execution returns to an impure context.

Read more…
pic_random_dist.f90

Integer-valued random distributions, reproducible across compilers.

pic_random_dist_real.f90

Real-valued random distributions, for tooling and statistics.

pic_rng.f90

Reproducible pseudo-random number generation with explicit state.

Read more…
pic_serialize.f90

Binary serialization helpers built on a small, self-describing envelope.

Read more…
pic_soa.f90

Runtime substrate for struct-of-arrays (SoA) containers.

Read more…
pic_soa_particle.f90

Struct-of-arrays container for particle data.

Read more…
pic_sorting.f90

This file is subject both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
pic_sorting_ord_sort.f90

This file is subjec† both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
pic_sorting_radix_sort.f90
pic_sorting_run_type.f90

Shared run_type derived type for the ord_sort and sort_index submodules.

Read more…
pic_sorting_sort.f90

This file is subject both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
pic_sorting_sort_index.F90

This file is subjec† both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
pic_statistics.f90

Basic descriptive statistics for 1-D arrays: mean, variance, standard deviation and combined min/max.

pic_string_type.F90

String derived type container

pic_string_type_constructor.f90

contains the definitions for building strings from different data types

pic_strings.f90

string manipulation module and subroutines

pic_strings_to_strings.F90

Contains the submodule that defines the to_string functions used to handle and manipulate strings

pic_timer.F90

timing routines in general

pic_tokenizer.f90

String splitting and checked numeric parsing.

pic_types.F90

pic_types.F90 controls the standarized sizes for the datatypes across pic, this is key for interfacing with other codes specially those that use default sizes

pic_uint64.f90

Arithmetic modulo 2**64 on integer(int64), without signed overflow.

pic_vector.f90

Growable, heap-backed arrays with bounds-checked access.

file~~graph~~FileGraph sourcefile~pic.f90 pic.f90 sourcefile~pic_ansi.f90 pic_ansi.f90 sourcefile~pic_array.f90 pic_array.f90 sourcefile~pic_array_hash.f90 pic_array_hash.f90 sourcefile~pic_soa.f90 pic_soa.f90 sourcefile~pic_array_hash.f90->sourcefile~pic_soa.f90 sourcefile~pic_soa_particle.f90 pic_soa_particle.f90 sourcefile~pic_array_hash.f90->sourcefile~pic_soa_particle.f90 sourcefile~pic_ascii.f90 pic_ascii.f90 sourcefile~pic_io.f90 pic_io.f90 sourcefile~pic_ascii.f90->sourcefile~pic_io.f90 sourcefile~pic_string_type.f90 pic_string_type.F90 sourcefile~pic_ascii.f90->sourcefile~pic_string_type.f90 sourcefile~pic_strings.f90 pic_strings.f90 sourcefile~pic_ascii.f90->sourcefile~pic_strings.f90 sourcefile~pic_tokenizer.f90 pic_tokenizer.f90 sourcefile~pic_ascii.f90->sourcefile~pic_tokenizer.f90 sourcefile~pic_cli.f90 pic_cli.f90 sourcefile~pic_clock.f90 pic_clock.f90 sourcefile~pic_command_line.f90 pic_command_line.f90 sourcefile~pic_constants.f90 pic_constants.f90 sourcefile~pic_csr.f90 pic_csr.f90 sourcefile~pic_graph.f90 pic_graph.f90 sourcefile~pic_csr.f90->sourcefile~pic_graph.f90 sourcefile~pic_error.f90 pic_error.F90 sourcefile~pic_error.f90->sourcefile~pic_array.f90 sourcefile~pic_error.f90->sourcefile~pic_cli.f90 sourcefile~pic_error.f90->sourcefile~pic_clock.f90 sourcefile~pic_error.f90->sourcefile~pic_command_line.f90 sourcefile~pic_error.f90->sourcefile~pic_csr.f90 sourcefile~pic_fixed_array.f90 pic_fixed_array.f90 sourcefile~pic_error.f90->sourcefile~pic_fixed_array.f90 sourcefile~pic_error.f90->sourcefile~pic_graph.f90 sourcefile~pic_hash_map.f90 pic_hash_map.f90 sourcefile~pic_error.f90->sourcefile~pic_hash_map.f90 sourcefile~pic_heap.f90 pic_heap.f90 sourcefile~pic_error.f90->sourcefile~pic_heap.f90 sourcefile~pic_random_dist.f90 pic_random_dist.f90 sourcefile~pic_error.f90->sourcefile~pic_random_dist.f90 sourcefile~pic_rng.f90 pic_rng.f90 sourcefile~pic_error.f90->sourcefile~pic_rng.f90 sourcefile~pic_serialize.f90 pic_serialize.f90 sourcefile~pic_error.f90->sourcefile~pic_serialize.f90 sourcefile~pic_error.f90->sourcefile~pic_soa.f90 sourcefile~pic_error.f90->sourcefile~pic_soa_particle.f90 sourcefile~pic_sorting.f90 pic_sorting.f90 sourcefile~pic_error.f90->sourcefile~pic_sorting.f90 sourcefile~pic_sorting_ord_sort.f90 pic_sorting_ord_sort.f90 sourcefile~pic_error.f90->sourcefile~pic_sorting_ord_sort.f90 sourcefile~pic_sorting_radix_sort.f90 pic_sorting_radix_sort.f90 sourcefile~pic_error.f90->sourcefile~pic_sorting_radix_sort.f90 sourcefile~pic_sorting_sort_index.f90 pic_sorting_sort_index.F90 sourcefile~pic_error.f90->sourcefile~pic_sorting_sort_index.f90 sourcefile~pic_error.f90->sourcefile~pic_tokenizer.f90 sourcefile~pic_vector.f90 pic_vector.f90 sourcefile~pic_error.f90->sourcefile~pic_vector.f90 sourcefile~pic_flop_rate.f90 pic_flop_rate.f90 sourcefile~pic_flop_recorder.f90 pic_flop_recorder.f90 sourcefile~pic_flop_recorder.f90->sourcefile~pic_flop_rate.f90 sourcefile~pic_format.f90 pic_format.f90 sourcefile~pic_global_definitions.f90 pic_global_definitions.f90 sourcefile~pic_global_definitions.f90->sourcefile~pic_error.f90 sourcefile~pic_helpers.f90 pic_helpers.f90 sourcefile~pic_global_definitions.f90->sourcefile~pic_helpers.f90 sourcefile~pic_logger.f90 pic_logger.f90 sourcefile~pic_global_definitions.f90->sourcefile~pic_logger.f90 sourcefile~pic_hash_32bit.f90 pic_hash_32bit.f90 sourcefile~pic_hash_32bit_fnv.f90 pic_hash_32bit_fnv.f90 sourcefile~pic_hash_32bit_fnv.f90->sourcefile~pic_hash_32bit.f90 sourcefile~pic_hash_32bit_fnv.f90->sourcefile~pic_hash_map.f90 sourcefile~pic_heap.f90->sourcefile~pic_graph.f90 sourcefile~pic_io.f90->sourcefile~pic_array.f90 sourcefile~pic_io.f90->sourcefile~pic_flop_rate.f90 sourcefile~pic_io.f90->sourcefile~pic_serialize.f90 sourcefile~pic_io.f90->sourcefile~pic_soa.f90 sourcefile~pic_timer.f90 pic_timer.F90 sourcefile~pic_io.f90->sourcefile~pic_timer.f90 sourcefile~pic_knowledge.f90 pic_knowledge.f90 sourcefile~pic_logger.f90->sourcefile~pic_knowledge.f90 sourcefile~pic_profiler.f90 pic_profiler.F90 sourcefile~pic_logger.f90->sourcefile~pic_profiler.f90 sourcefile~pic_pure_logger.f90 pic_pure_logger.f90 sourcefile~pic_logger.f90->sourcefile~pic_pure_logger.f90 sourcefile~pic_math.f90 pic_math.f90 sourcefile~pic_optional.f90 pic_optional.f90 sourcefile~pic_optional.f90->sourcefile~pic_array.f90 sourcefile~pic_optional.f90->sourcefile~pic_sorting.f90 sourcefile~pic_optional.f90->sourcefile~pic_string_type.f90 sourcefile~pic_optional.f90->sourcefile~pic_strings.f90 sourcefile~pic_random_dist_real.f90 pic_random_dist_real.f90 sourcefile~pic_rng.f90->sourcefile~pic_random_dist.f90 sourcefile~pic_rng.f90->sourcefile~pic_random_dist_real.f90 sourcefile~pic_serialize.f90->sourcefile~pic_soa.f90 sourcefile~pic_soa.f90->sourcefile~pic_soa_particle.f90 sourcefile~pic_sorting.f90->sourcefile~pic_profiler.f90 sourcefile~pic_sorting.f90->sourcefile~pic_sorting_ord_sort.f90 sourcefile~pic_sorting.f90->sourcefile~pic_sorting_radix_sort.f90 sourcefile~pic_sorting_sort.f90 pic_sorting_sort.f90 sourcefile~pic_sorting.f90->sourcefile~pic_sorting_sort.f90 sourcefile~pic_sorting.f90->sourcefile~pic_sorting_sort_index.f90 sourcefile~pic_sorting_run_type.f90 pic_sorting_run_type.f90 sourcefile~pic_sorting_run_type.f90->sourcefile~pic_sorting_ord_sort.f90 sourcefile~pic_sorting_run_type.f90->sourcefile~pic_sorting_sort_index.f90 sourcefile~pic_statistics.f90 pic_statistics.f90 sourcefile~pic_string_type.f90->sourcefile~pic_ansi.f90 sourcefile~pic_string_type.f90->sourcefile~pic_cli.f90 sourcefile~pic_string_type.f90->sourcefile~pic_knowledge.f90 sourcefile~pic_string_type_constructor.f90 pic_string_type_constructor.f90 sourcefile~pic_string_type.f90->sourcefile~pic_string_type_constructor.f90 sourcefile~pic_string_type.f90->sourcefile~pic_strings.f90 sourcefile~pic_strings_to_strings.f90 pic_strings_to_strings.F90 sourcefile~pic_string_type.f90->sourcefile~pic_strings_to_strings.f90 sourcefile~pic_string_type.f90->sourcefile~pic_tokenizer.f90 sourcefile~pic_string_type.f90->sourcefile~pic_vector.f90 sourcefile~pic_strings.f90->sourcefile~pic_ansi.f90 sourcefile~pic_strings.f90->sourcefile~pic_clock.f90 sourcefile~pic_strings.f90->sourcefile~pic_format.f90 sourcefile~pic_strings.f90->sourcefile~pic_string_type_constructor.f90 sourcefile~pic_strings.f90->sourcefile~pic_strings_to_strings.f90 sourcefile~pic_strings.f90->sourcefile~pic_tokenizer.f90 sourcefile~pic_timer.f90->sourcefile~pic_flop_rate.f90 sourcefile~pic_timer.f90->sourcefile~pic_profiler.f90 sourcefile~pic_tokenizer.f90->sourcefile~pic_cli.f90 sourcefile~pic_types.f90 pic_types.F90 sourcefile~pic_types.f90->sourcefile~pic_ansi.f90 sourcefile~pic_types.f90->sourcefile~pic_array.f90 sourcefile~pic_types.f90->sourcefile~pic_array_hash.f90 sourcefile~pic_types.f90->sourcefile~pic_ascii.f90 sourcefile~pic_types.f90->sourcefile~pic_cli.f90 sourcefile~pic_types.f90->sourcefile~pic_clock.f90 sourcefile~pic_types.f90->sourcefile~pic_command_line.f90 sourcefile~pic_types.f90->sourcefile~pic_constants.f90 sourcefile~pic_types.f90->sourcefile~pic_csr.f90 sourcefile~pic_types.f90->sourcefile~pic_error.f90 sourcefile~pic_types.f90->sourcefile~pic_fixed_array.f90 sourcefile~pic_types.f90->sourcefile~pic_flop_rate.f90 sourcefile~pic_types.f90->sourcefile~pic_flop_recorder.f90 sourcefile~pic_types.f90->sourcefile~pic_format.f90 sourcefile~pic_types.f90->sourcefile~pic_global_definitions.f90 sourcefile~pic_types.f90->sourcefile~pic_graph.f90 sourcefile~pic_types.f90->sourcefile~pic_hash_32bit.f90 sourcefile~pic_types.f90->sourcefile~pic_hash_32bit_fnv.f90 sourcefile~pic_types.f90->sourcefile~pic_hash_map.f90 sourcefile~pic_types.f90->sourcefile~pic_heap.f90 sourcefile~pic_types.f90->sourcefile~pic_helpers.f90 sourcefile~pic_types.f90->sourcefile~pic_io.f90 sourcefile~pic_types.f90->sourcefile~pic_knowledge.f90 sourcefile~pic_types.f90->sourcefile~pic_logger.f90 sourcefile~pic_types.f90->sourcefile~pic_math.f90 sourcefile~pic_types.f90->sourcefile~pic_optional.f90 sourcefile~pic_types.f90->sourcefile~pic_profiler.f90 sourcefile~pic_types.f90->sourcefile~pic_pure_logger.f90 sourcefile~pic_types.f90->sourcefile~pic_random_dist.f90 sourcefile~pic_types.f90->sourcefile~pic_random_dist_real.f90 sourcefile~pic_types.f90->sourcefile~pic_rng.f90 sourcefile~pic_types.f90->sourcefile~pic_serialize.f90 sourcefile~pic_types.f90->sourcefile~pic_soa.f90 sourcefile~pic_types.f90->sourcefile~pic_soa_particle.f90 sourcefile~pic_types.f90->sourcefile~pic_sorting.f90 sourcefile~pic_types.f90->sourcefile~pic_sorting_run_type.f90 sourcefile~pic_types.f90->sourcefile~pic_statistics.f90 sourcefile~pic_types.f90->sourcefile~pic_string_type.f90 sourcefile~pic_types.f90->sourcefile~pic_strings.f90 sourcefile~pic_types.f90->sourcefile~pic_timer.f90 sourcefile~pic_types.f90->sourcefile~pic_tokenizer.f90 sourcefile~pic_uint64.f90 pic_uint64.f90 sourcefile~pic_types.f90->sourcefile~pic_uint64.f90 sourcefile~pic_types.f90->sourcefile~pic_vector.f90 sourcefile~pic_uint64.f90->sourcefile~pic_array_hash.f90 sourcefile~pic_uint64.f90->sourcefile~pic_random_dist.f90 sourcefile~pic_uint64.f90->sourcefile~pic_rng.f90
Help