Skip to content

mod_abstract_property_list

Lines: 151 | Visibility: private

Dependencies

Uses

module~~mod_abstract_property_list~~UsesGraph module~mod_abstract_property_list mod_abstract_property_list module~mod_dynamic_int_array mod_dynamic_int_array module~mod_abstract_property_list->module~mod_dynamic_int_array module~mod_dynamic_int_array_2d mod_dynamic_int_array_2d module~mod_abstract_property_list->module~mod_dynamic_int_array_2d module~mod_dynamic_string_array mod_dynamic_string_array module~mod_abstract_property_list->module~mod_dynamic_string_array module~mod_mpi mod_mpi module~mod_abstract_property_list->module~mod_mpi module~mod_optional_args mod_optional_args module~mod_abstract_property_list->module~mod_optional_args module~mod_string mod_string module~mod_abstract_property_list->module~mod_string module~mod_throw mod_throw module~mod_abstract_property_list->module~mod_throw module~mod_dynamic_int_array_2d->module~mod_mpi module~mod_dynamic_string_array->module~mod_string module~mod_precision mod_precision module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_string->module~mod_precision module~mod_throw->module~mod_mpi iso_c_binding iso_c_binding module~mod_throw->iso_c_binding iso_fortran_env iso_fortran_env module~mod_throw->iso_fortran_env module~mod_io mod_io module~mod_throw->module~mod_io module~mod_throw->module~mod_precision module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_io->module~mod_optional_args module~mod_io->iso_fortran_env module~mod_io->module~mod_precision module~mod_precision->iso_c_binding module~mod_precision->iso_fortran_env module~mod_sort->module~mod_precision

Used By

module~~mod_abstract_property_list~~UsedByGraph module~mod_abstract_property_list mod_abstract_property_list module~mod_initialize mod_initialize module~mod_initialize->module~mod_abstract_property_list module~mod_dataset_storage mod_dataset_storage module~mod_initialize->module~mod_dataset_storage module~mod_two_body mod_two_body module~mod_initialize->module~mod_two_body module~mod_storage_container mod_storage_container module~mod_storage_container->module~mod_abstract_property_list module~mod_dataset_storage->module~mod_storage_container module~mod_predict_mode mod_predict_mode module~mod_predict_mode->module~mod_initialize module~mod_predict_mode->module~mod_dataset_storage module~mod_write_outfiles mod_write_outfiles module~mod_predict_mode->module~mod_write_outfiles module~mod_predict_multiple_structures mod_predict_multiple_structures module~mod_predict_mode->module~mod_predict_multiple_structures module~mod_predict_mode->module~mod_two_body module~mod_dataloader_file mod_dataloader_file module~mod_predict_mode->module~mod_dataloader_file module~mod_runner_interface_bindings mod_runner_interface_bindings module~mod_runner_interface_bindings->module~mod_initialize module~mod_runner_interface_bindings->module~mod_two_body module~mod_runner_interface mod_runner_interface module~mod_runner_interface_bindings->module~mod_runner_interface module~mod_sum_out mod_sum_out module~mod_sum_out->module~mod_storage_container module~mod_train_energy_multiple_structures mod_train_energy_multiple_structures module~mod_train_energy_multiple_structures->module~mod_initialize module~mod_train_energy_multiple_structures->module~mod_dataset_storage module~mod_train_forces_multiple_structures mod_train_forces_multiple_structures module~mod_train_forces_multiple_structures->module~mod_initialize module~mod_train_forces_multiple_structures->module~mod_dataset_storage module~mod_train_forces_multiple_structures->module~mod_train_energy_multiple_structures module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_initialize module~mod_train_loop_4g_charges->module~mod_dataset_storage module~mod_cost_calculator mod_cost_calculator module~mod_train_loop_4g_charges->module~mod_cost_calculator module~mod_cost_epoch mod_cost_epoch module~mod_train_loop_4g_charges->module~mod_cost_epoch module~mod_output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges module~mod_train_loop_4g_charges->module~mod_output_files_and_cost_4g_charges module~mod_train_loop_4g_charges->module~mod_dataloader_file module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_loop_atomic_property->module~mod_initialize module~mod_train_loop_atomic_property->module~mod_dataset_storage module~mod_train_loop_atomic_property->module~mod_cost_calculator module~mod_train_loop_atomic_property->module~mod_cost_epoch module~mod_output_files_and_cost mod_output_files_and_cost module~mod_train_loop_atomic_property->module~mod_output_files_and_cost module~mod_train_loop_atomic_property->module~mod_dataloader_file module~mod_train_loop_short_range mod_train_loop_short_range module~mod_train_loop_short_range->module~mod_initialize module~mod_train_loop_short_range->module~mod_dataset_storage module~mod_train_loop_short_range->module~mod_train_energy_multiple_structures module~mod_train_loop_short_range->module~mod_train_forces_multiple_structures module~mod_train_loop_short_range->module~mod_cost_calculator module~mod_train_loop_short_range->module~mod_cost_epoch module~mod_train_loop_short_range->module~mod_output_files_and_cost module~mod_output_files_and_cost_4g_short_range mod_output_files_and_cost_4g_short_range module~mod_train_loop_short_range->module~mod_output_files_and_cost_4g_short_range module~mod_predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_loop_short_range->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_loop_short_range->module~mod_dataloader_file module~mod_predict_ee4g_feature_calculator_multiple_structures mod_predict_ee4g_feature_calculator_multiple_structures module~mod_train_loop_short_range->module~mod_predict_ee4g_feature_calculator_multiple_structures module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_initialize module~mod_train_mode->module~mod_dataset_storage module~mod_train_mode->module~mod_train_loop_4g_charges module~mod_train_mode->module~mod_train_loop_atomic_property module~mod_train_mode->module~mod_train_loop_short_range module~mod_train_mode->module~mod_cost_epoch module~mod_dataset_statistics mod_dataset_statistics module~mod_train_mode->module~mod_dataset_statistics module~mod_predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures module~mod_train_mode->module~mod_predict_4g_charges_training_qeq_multiple_structures module~mod_predict_all_chunks mod_predict_all_chunks module~mod_train_mode->module~mod_predict_all_chunks module~mod_train_mode->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_test_split mod_train_test_split module~mod_train_mode->module~mod_train_test_split module~mod_train_mode->module~mod_two_body module~mod_write_outfiles_training mod_write_outfiles_training module~mod_train_mode->module~mod_write_outfiles_training module~mod_train_mode->module~mod_dataloader_file module~mod_dataset_statistics_chi_all_chunks mod_dataset_statistics_chi_all_chunks module~mod_train_mode->module~mod_dataset_statistics_chi_all_chunks module~mod_feature_map_scaling_all_chunks mod_feature_map_scaling_all_chunks module~mod_train_mode->module~mod_feature_map_scaling_all_chunks module~mod_precalc_coulomb_matrix_all_chunks mod_precalc_coulomb_matrix_all_chunks module~mod_train_mode->module~mod_precalc_coulomb_matrix_all_chunks module~mod_precalc_nl_deriv_features_single_chunk mod_precalc_nl_deriv_features_single_chunk module~mod_train_mode->module~mod_precalc_nl_deriv_features_single_chunk module~mod_train_mode->module~mod_predict_ee4g_feature_calculator_multiple_structures module~mod_write_outfiles->module~mod_initialize module~mod_write_outfiles->module~mod_dataset_storage module~mod_write_outfiles->module~mod_sum_out program~runner RuNNer program~runner->module~mod_initialize program~runner->module~mod_predict_mode program~runner->module~mod_train_mode program~runner->module~mod_two_body program~runner->module~mod_dataloader_file module~mod_inputdata mod_inputdata program~runner->module~mod_inputdata module~mod_precompute_features_all_chunks mod_precompute_features_all_chunks program~runner->module~mod_precompute_features_all_chunks module~mod_precompute_global_features_all_chunks mod_precompute_global_features_all_chunks program~runner->module~mod_precompute_global_features_all_chunks module~mod_calculate_coulomb_matrix mod_calculate_coulomb_matrix program~runner->module~mod_calculate_coulomb_matrix module~mod_abstract_structure_data_file mod_abstract_structure_data_file module~mod_abstract_structure_data_file->module~mod_dataset_storage module~mod_cost_calculator->module~mod_dataset_storage module~mod_cost_calculator->module~mod_cost_epoch module~mod_cost_calculator->module~mod_write_outfiles_training module~mod_cost_calculator->module~mod_dataloader_file module~mod_cost_epoch->module~mod_dataset_storage module~mod_dataset_statistics->module~mod_dataset_storage module~mod_dataset_statistics->module~mod_dataloader_file module~mod_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_lammps_interface->module~mod_runner_interface module~mod_output_files_and_cost->module~mod_dataset_storage module~mod_output_files_and_cost->module~mod_cost_calculator module~mod_output_files_and_cost->module~mod_predict_multiple_structures module~mod_output_files_and_cost->module~mod_dataloader_file module~mod_output_files_and_cost_4g_charges->module~mod_dataset_storage module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator module~mod_output_files_and_cost_4g_charges->module~mod_predict_4g_charges_training_qeq_multiple_structures module~mod_output_files_and_cost_4g_charges->module~mod_dataloader_file module~mod_output_files_and_cost_4g_short_range->module~mod_dataset_storage module~mod_output_files_and_cost_4g_short_range->module~mod_cost_calculator module~mod_predict_4g_short_range_training_qeq_multiple_structures mod_predict_4g_short_range_training_qeq_multiple_structures module~mod_output_files_and_cost_4g_short_range->module~mod_predict_4g_short_range_training_qeq_multiple_structures module~mod_output_files_and_cost_4g_short_range->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_output_files_and_cost_4g_short_range->module~mod_dataloader_file module~mod_post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_dataset_storage module~mod_store_atomic_property_single_structure mod_store_atomic_property_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_store_atomic_property_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_two_body module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_dataset_storage module~mod_predict_4g_short_range_training_qeq_multiple_structures->module~mod_dataset_storage module~mod_predict_all_chunks->module~mod_dataset_storage module~mod_predict_all_chunks->module~mod_predict_multiple_structures module~mod_predict_all_chunks->module~mod_two_body module~mod_predict_all_chunks->module~mod_dataloader_file module~mod_predict_multiple_structures->module~mod_dataset_storage module~mod_predict_multiple_structures->module~mod_post_processing_wrapper_single_structure module~mod_predict_multiple_structures->module~mod_store_atomic_property_single_structure module~mod_predict_multiple_structures->module~mod_two_body module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_dataset_storage module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_dataloader_file module~mod_store_atomic_property_single_structure->module~mod_dataset_storage module~mod_train_test_split->module~mod_dataset_storage module~mod_train_test_split->module~mod_cost_epoch module~mod_two_body->module~mod_dataset_storage module~mod_two_body->module~mod_dataloader_file module~mod_write_outfiles_training->module~mod_dataset_storage module~mod_write_outfiles_training->module~mod_write_outfiles module~mod_write_outfiles_training->module~mod_cost_epoch module~mod_dataloader_file->module~mod_abstract_structure_data_file module~mod_dataset_statistics_chi_all_chunks->module~mod_cost_epoch module~mod_dataset_statistics_chi_all_chunks->module~mod_dataset_statistics module~mod_dataset_statistics_chi_all_chunks->module~mod_dataloader_file module~mod_feature_map_scaling_all_chunks->module~mod_cost_epoch module~mod_feature_map_scaling_all_chunks->module~mod_dataloader_file module~mod_feature_map_scaling_all_chunks->module~mod_precalc_nl_deriv_features_single_chunk module~mod_inputdata->module~mod_abstract_structure_data_file module~mod_precalc_coulomb_matrix_all_chunks->module~mod_predict_4g_charges_training_qeq_multiple_structures module~mod_precalc_coulomb_matrix_all_chunks->module~mod_dataloader_file module~mod_precompute_features_all_chunks->module~mod_train_test_split module~mod_precompute_features_all_chunks->module~mod_dataloader_file module~mod_precompute_global_features_all_chunks->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_precompute_global_features_all_chunks->module~mod_dataloader_file module~mod_precompute_global_features_all_chunks->module~mod_predict_ee4g_feature_calculator_multiple_structures module~mod_predict_single_structure mod_predict_single_structure module~mod_predict_single_structure->module~mod_post_processing_wrapper_single_structure module~mod_predict_single_structure->module~mod_two_body module~mod_runner_interface->module~mod_two_body module~mod_calculate_coulomb_matrix->module~mod_dataloader_file module~mod_feature_calc_interface mod_feature_calc_interface module~mod_feature_calc_interface->module~mod_runner_interface module~mod_generic_interface mod_generic_interface module~mod_feature_calc_interface->module~mod_generic_interface module~mod_generic_interface->module~mod_predict_single_structure module~mod_generic_interface->module~mod_runner_interface module~mod_precalc_nl_deriv_features_single_chunk->module~mod_dataloader_file module~mod_predict_ee4g_feature_calculator_multiple_structures->module~mod_dataloader_file module~mod_train_4g_atomic_charges_structure_batch->module~mod_dataloader_file

Derived Types Summary

Name Description
AbstractPropertyList Parent object for PropertyLists. A PropertyList object contains an arbitrary number of...

Procedures Summary

Name Type Description
prepare_initialization Subroutine Initialize temporary dynamic arrays to prepare the object for add_property calls.
add_property Subroutine Add information about a property that shall be stored to this object. Called during...
name2idx Subroutine Get the index of the property with the given name.
tag2idx Subroutine Get the index of all properties with a given tag.

Derived Types Details

type AbstractPropertyList

Parent object for PropertyLists.

A PropertyList object contains an arbitrary number of properties of a given type (currently integer or real). In this context, one property is e.g. the ID of a structure (integer property of length 1) or the force components of an atom (real property of length 3 (x, y and z)).

Child classes should implement a props array, its type being a child class of AbstractFlatData. For example, PropertyListInt contains a props array of type FlatDataInt. These AbstractFlatData descendants contains the actual data array which is of an intrinsic type.

This class does most of the heavy lifting for converting names and tags to the indices in the props array. The relevant routines for this are: - name2idx: find out the index of a property with given name in the props array. - tag2idx: find out the index of all properties that have the given tag.

These routines also demonstrate that there are two ways to store data in a PropertyList object: by name or by tag. However, converting a name to an index is costly (findloc call), so the preferred way is to convert the necessary names to indices once early in the program, and then directly index into the props array.

Components

Type-Bound Procedures

Name Attributes Binding
initialize public ⇒ initialize
name2idx_child public ⇒ name2idx_child
has_tag public ⇒ has_tag
rewind public ⇒ rewind
collect public ⇒ collect
sort public ⇒ sort
freeze public ⇒ freeze
prepare_initialization public ⇒ prepare_initialization
add_property public ⇒ add_property
name2idx public ⇒ name2idx
tag2idx public ⇒ tag2idx

Inherits

type~~abstractpropertylist~~InheritsGraph type~abstractpropertylist AbstractPropertyList type~dynamicintarray DynamicIntArray type~abstractpropertylist->type~dynamicintarray init_length, init_write_idx type~dynamicintarray2d DynamicIntArray2D type~abstractpropertylist->type~dynamicintarray2d init_tags type~dynamicstringarray DynamicStringArray type~abstractpropertylist->type~dynamicstringarray init_names, init_write_labels type~string String type~dynamicstringarray->type~string data

Procedure Details

subroutine prepare_initialization

subroutine prepare_initialization( &
    self &
)

Initialize temporary dynamic arrays to prepare the object for add_property calls.

Arguments


subroutine add_property

subroutine add_property( &
    self, &
    name, &
    write_labels, &
    length, &
    tags, &
    write_idx &
)

Add information about a property that shall be stored to this object.

Called during initialization only. prepare_initialization must be called before the first call to this subroutine or it will fail.

Every property which should be stored in the PropertyList object after initialization is done, must be added during initialization using this routine. For each property that is added, one FlatData object is created in the props array of the PropertyList object.

Arguments

  • self : class(AbstractPropertyList) [inout]
  • name : character [in]– Name of the future property.
  • write_labels : type(String) (dim: (:)) [in]– If given, this must be an array of length `length`, meaning there must be one header per column that might be dumped to a file later on. Default is using the name as the header for each column.
  • length : integer [in]– How many values are stored per entry in the array. This is the first dimension of the `data` array of the `FlatData` object. For example, it would be 1 for the atomic charge, 3 for the forces, or 9 for the energy strain derivative (if stored as a flat vector). Default is 1.
  • tags : integer (dim: (:)) [in]– If given, a list of tags that this property can be searched by later. Use `tag2idx` to get the indices of all properties with a given tag.
  • write_idx : integer [in]– If given, the location of the property per row during writing to a file. Default is -1, indicating automatic sorting.

subroutine name2idx

subroutine name2idx( &
    self, &
    name, &
    prop_idx, &
    allow_failure &
)

Get the index of the property with the given name.

Arguments

  • self : class(AbstractPropertyList) [in]
  • name : character [in]– Name of the property which should be searched.
  • prop_idx : integer [out]– The index that was found.
  • allow_failure : logical [in]– If True, we do not throw an exception if the name is not present. In this case the calling routine should implement some form of error handling. `prop_idx` will be 0 if the name is not found.

subroutine tag2idx

subroutine tag2idx( &
    self, &
    tag, &
    indices, &
    linvert &
)

Get the index of all properties with a given tag.

Arguments

  • self : class(AbstractPropertyList) [in]
  • tag : integer [in]– Tag to search for.
  • indices : integer (dim: (:)) [out]– The index of all properties carrying this tag in the `props` array.
  • linvert : logical [in]– If True, we return the index of all properties _without_ that tag.