Documentation for module topology_util

Collection of subroutine needed for topology related things

source: topology_util.F
Loading...

public Types:

array1_list_type
...
array2_list_type
...

Generic procedures:

reorder_structure

public Subroutines/Functions:

Check and returns the ELEMENT label
each atom will be assigned a molecule number based on bonded fragments The array mol_info should be initialized with -1 before calling the find_molecule routine
...
SUBROUTINE RECURSIVE
reorder_list_array (ilist1, ilist2, ilist3, ilist4, nsize, ndim)
Order arrays of lists
SUBROUTINE RECURSIVE
tag_molecule (icheck, bond_list, i, my_mol)
gives back a mapping of molecules.. icheck needs to be initialized with -1
Check and verify that all molecules of the same kind are bonded the same
...
Use info from periodic table and set atm_mass

public Types:

TYPE :: array1_list_type

...


INTEGER,
POINTER, DIMENSION(:) :: array1 => NULL() ...

TYPE :: array2_list_type

...


INTEGER,
POINTER, DIMENSION(:) :: array1 => NULL() ...
INTEGER,
POINTER, DIMENSION(:) :: array2 => NULL() ...


Generic procedure reorder_structure

Given two lists of corresponding element a complex type is built in which each element of the type has a list of mapping elements

INTENT(inout)
:: work(:) ×
INTENT(inout)
:: work(:) ×
INTEGER,
INTENT(in)
:: list1(:) × ×
INTEGER,
INTENT(in)
:: list2(:) × ×
INTEGER,
INTENT(in)
:: n × ×
INTEGER,
INTENT(in)
:: list3(:) ×

SUBROUTINEcheck_subsys_element(element_in, atom_name_in, element_out, subsys_section, use_mm_map_first)

Check and returns the ELEMENT label

Arguments:
CHARACTER(*),
INTENT(in)
:: element_in ...
CHARACTER(*),
INTENT(in)
:: atom_name_in ...
INTENT(out)
:: element_out ...
POINTER
:: subsys_section ...
LOGICAL
:: use_mm_map_first ...

SUBROUTINEfind_molecule(atom_bond_list, mol_info, mol_name)

each atom will be assigned a molecule number based on bonded fragments The array mol_info should be initialized with -1 before calling the find_molecule routine

Arguments:
INTENT(in)
:: atom_bond_list(:) ...
INTEGER,
POINTER
:: mol_info(:) ...
INTEGER,
POINTER
:: mol_name(:) ...

RECURSIVE SUBROUTINEgive_back_molecule(icheck, bond_list, i, mol_natom, mol_map, my_mol)

...

Arguments:
LOGICAL,
POINTER
:: icheck(:) ...
POINTER
:: bond_list(:) ...
INTEGER,
INTENT(in)
:: i ...
INTEGER,
INTENT(inout)
:: mol_natom ...
INTEGER,
POINTER
:: mol_map(:) ...
INTEGER,
INTENT(in)
:: my_mol ...

RECURSIVE SUBROUTINEreorder_list_array(ilist1, ilist2, ilist3, ilist4, nsize, ndim)

Order arrays of lists

Arguments:
INTEGER,
POINTER
:: ilist1(:) ...
INTEGER,
OPTIONAL, POINTER
:: ilist2(:) ...
INTEGER,
OPTIONAL, POINTER
:: ilist3(:) ...
INTEGER,
OPTIONAL, POINTER
:: ilist4(:) ...
INTEGER,
INTENT(in)
:: nsize ...
INTEGER,
INTENT(in)
:: ndim ...

RECURSIVE SUBROUTINEtag_molecule(icheck, bond_list, i, my_mol)

gives back a mapping of molecules.. icheck needs to be initialized with -1

Arguments:
INTEGER,
POINTER
:: icheck(:) ...
POINTER
:: bond_list(:) ...
INTEGER,
INTENT(in)
:: i ...
INTEGER,
INTENT(in)
:: my_mol ...

SUBROUTINEtopology_molecules_check(topology, subsys_section)

Check and verify that all molecules of the same kind are bonded the same

Arguments:
INTENT(inout)
:: topology ...
POINTER
:: subsys_section ...

SUBROUTINEtopology_reorder_atoms(topology, qmmm, qmmm_env_mm, subsys_section, force_env_section)

...

Arguments:
INTENT(inout)
:: topology ...
LOGICAL,
INTENT(in),
OPTIONAL
:: qmmm ...
OPTIONAL, POINTER
:: qmmm_env_mm ...
POINTER
:: subsys_section ...
POINTER
:: force_env_section ...

SUBROUTINEtopology_set_atm_mass(topology, subsys_section)

Use info from periodic table and set atm_mass

Arguments:
INTENT(inout)
:: topology ...
POINTER
:: subsys_section ...

SUBROUTINEreorder_structure1d(work, list1, list2, n)

Given two lists of corresponding element a complex type is built in which each element of the type has a list of mapping elements

Arguments:
INTENT(inout)
:: work(:) ...
INTEGER,
INTENT(in)
:: list1(:) ...
INTEGER,
INTENT(in)
:: list2(:) ...
INTEGER,
INTENT(in)
:: n ...

SUBROUTINEreorder_structure2d(work, list1, list2, list3, n)

Given two lists of corresponding element a complex type is built in which each element of the type has a list of mapping elements

Arguments:
INTENT(inout)
:: work(:) ...
INTEGER,
INTENT(in)
:: list1(:) ...
INTEGER,
INTENT(in)
:: list2(:) ...
INTEGER,
INTENT(in)
:: list3(:) ...
INTEGER,
INTENT(in)
:: n ...