GRIDMAN
grid managment library
Functions/Subroutines
index.f File Reference

Methods of the data-type GRIDMAN_INDEX, see gridman.f. More...

Go to the source code of this file.

Functions/Subroutines

subroutine gridman_index_allocate (INDEX, NINDEX, NELEMENTS, IERR)
 Allocate index object. More...
 
subroutine gridman_index_deallocate (INDEX, IERR)
 Allocate index object. More...
 
subroutine gridman_index_check (INDEX, RES, IERR)
 Check index object. More...
 
subroutine gridman_index_write (INDEX, IOUT, IERR)
 Save index object in a file. More...
 
subroutine gridman_index_read (INDEX, IIN, IERR)
 Read index object from file. More...
 
subroutine gridman_index_compare (INDEX1, INDEX2, RES, IERR)
 Compare two index objects. More...
 
subroutine gridman_index_copy (INDEX2, INDEX1, IERR)
 Create a copy of the index object. More...
 
logical function gridman_index_repeated_elements (INDEX, IERR)
 Check if the same element index appear more than once. More...
 
subroutine gridman_index_elmap (ELMAP, NMIN, NMAX, INDEX, IERR)
 Create an aray which maps elements into the table of indices. More...
 
subroutine gridman_index_create121 (INDEX, N, IERR)
 Create index table for "one-to-one" mapping. More...
 
subroutine gridman_index_transform (INDEX2, INDEX1, IMAP12, N12, IERR)
 Transform indices of elements - IND(0,:) More...
 
subroutine gridman_index_merge (INDEX, INDEX1, INDEX2, IERR)
 Merge INDEX2 into INDEX1. More...
 

Detailed Description

Methods of the data-type GRIDMAN_INDEX, see gridman.f.

Definition in file index.f.

Function/Subroutine Documentation

subroutine gridman_index_allocate ( type(gridman_index)  INDEX,
integer, intent(in)  NINDEX,
integer(gridman_sp), intent(in)  NELEMENTS,
integer, intent(out)  IERR 
)

Allocate index object.

WARNING: INDEX will be overwritten if alreay exists!

Parameters
indexResulting index object
[in]nindexNumber of indices
[in]nelementsNumber of elements
[out]ierrError code

Definition at line 28 of file index.f.

References gridman_index_deallocate(), and gridman::gridman_sp.

Referenced by gridman_addsurf2grid_2d(), gridman_addsurf2grid_3d(), gridman_carre2grid(), gridman_grid2d_cut(), gridman_grid2d_triang(), gridman_grid_eliminate_cells(), gridman_grid_eliminate_edges(), gridman_index_copy(), gridman_index_create121(), gridman_index_merge(), gridman_index_read(), gridman_index_transform(), gridman_template2grid(), and gridman_tria2grid().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gridman_index_deallocate ( type(gridman_index)  INDEX,
integer, intent(out)  IERR 
)

Allocate index object.

Parameters
indexIndex object
[out]ierrError code

Definition at line 98 of file index.f.

References gridman::gridman_dbg, and gridman::gridman_unit.

Referenced by gridman_grid_deallocate(), gridman_grid_eliminate_edges(), gridman_index_allocate(), gridman_index_merge(), and gridman_tria2grid().

Here is the caller graph for this function:

subroutine gridman_index_check ( type(gridman_index)  INDEX,
integer, intent(out)  RES,
integer, intent(out)  IERR 
)

Check index object.

  • RES=0: the index is correct
  • RES=1: index is not allocated
  • RES=2: dimensions are incorrect
  • RES=3: low array bounds are incorrect
  • RES=4: upper array bounds are incorrect
  • RES=5: allocation of COLUMNS is incorrect
Parameters
indexIndex object to be checked
[out]resCode of result
[out]ierrError code

Definition at line 149 of file index.f.

References gridman::gridman_sp.

Referenced by gridman_grid_check(), gridman_index_compare(), gridman_index_copy(), gridman_index_create121(), gridman_index_elmap(), gridman_index_merge(), gridman_index_transform(), and gridman_index_write().

Here is the caller graph for this function:

subroutine gridman_index_write ( type(gridman_index)  INDEX,
integer, intent(in)  IOUT,
integer, intent(out)  IERR 
)

Save index object in a file.

Parameters
indexIndex object to be saved
[in]ioutIndex of the output unit
[out]ierrError code

Definition at line 234 of file index.f.

References gridman_index_check(), gridman::gridman_length, and gridman::gridman_sp.

Referenced by gridman_grid_unitwrite().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gridman_index_read ( type(gridman_index)  INDEX,
integer, intent(in)  IIN,
integer, intent(out)  IERR 
)

Read index object from file.

Parameters
indexResulting index object
[in]iinIndex of the output unit
[out]ierrError code

Definition at line 327 of file index.f.

References gridman_index_allocate(), gridman::gridman_length, and gridman::gridman_sp.

Referenced by gridman_grid_unitread().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gridman_index_compare ( type(gridman_index)  INDEX1,
type(gridman_index)  INDEX2,
integer, intent(out)  RES,
integer, intent(out)  IERR 
)

Compare two index objects.

  • RES=0: two objects are equivalent
  • RES=1: different dimensions
  • RES=2: different elements
  • RES=3: different indices
  • RES=4: different descriptions
  • RES=5: different description of columns
Parameters
index11st index object
index22nd index object
[out]resCode of result
[out]ierrError code

Definition at line 423 of file index.f.

References gridman_index_check(), and gridman::gridman_sp.

Referenced by gridman_grid_compare().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gridman_index_copy ( type(gridman_index)  INDEX2,
type(gridman_index)  INDEX1,
integer, intent(out)  IERR 
)

Create a copy of the index object.

WARNING: INDEX2 will be overwritten if already exists!

Parameters
index1Original index
index2Copy to be created
[out]ierrError code

Definition at line 538 of file index.f.

References gridman_index_allocate(), gridman_index_check(), and gridman::gridman_unit.

Referenced by gridman_grid2d_merge(), gridman_grid2d_triang(), gridman_grid_combine(), gridman_grid_copy(), and gridman_grid_eliminate_edges().

Here is the call graph for this function:

Here is the caller graph for this function:

logical function gridman_index_repeated_elements ( type(gridman_index)  INDEX,
integer, intent(out)  IERR 
)

Check if the same element index appear more than once.

Return .TRUE. if same element index appears more than once, and .FALSE. otherwise

Parameters
indexResulting index object
[out]ierrError code

Definition at line 586 of file index.f.

References gridman::gridman_sp.

Referenced by gridman_index_elmap().

Here is the caller graph for this function:

subroutine gridman_index_elmap ( integer(gridman_sp), dimension(:), allocatable  ELMAP,
integer(gridman_sp), intent(out)  NMIN,
integer(gridman_sp), intent(out)  NMAX,
type(gridman_index)  INDEX,
integer, intent(out)  IERR 
)

Create an aray which maps elements into the table of indices.

Parameters
elmapMapping array, ELMAP(NMAX:NMIN)

ELMAP(I) is the position of element I in INDEXES: that is, indices of this element can be read as I (INDEXES(1:,ELMAP(I)). If ELMAP(I)<1 then index for element I is not defined

WRNING: ELMAP will be re-allocated if already exists

Parameters
[out]nminLow boundary of ELMAP
[out]nmaxUpper boundary of ELMAP
indexIndex object
[out]ierrError code

Definition at line 643 of file index.f.

References gridman_index_check(), gridman_index_repeated_elements(), and gridman::gridman_sp.

Here is the call graph for this function:

subroutine gridman_index_create121 ( type(gridman_index)  INDEX,
integer(gridman_sp), intent(in)  N,
integer, intent(out)  IERR 
)

Create index table for "one-to-one" mapping.

WARNING: INDEX is re-allocated if already exists

Parameters
indexResulting index object
[in]nNumber of elements in the resulting index
[out]ierrError code

Definition at line 733 of file index.f.

References gridman_index_allocate(), gridman_index_check(), gridman::gridman_sp, and gridman::gridman_unit.

Here is the call graph for this function:

subroutine gridman_index_transform ( type(gridman_index)  INDEX2,
type(gridman_index)  INDEX1,
integer(gridman_sp), dimension(2,n12), intent(in)  IMAP12,
integer(gridman_sp), intent(in)  N12,
integer, intent(out)  IERR 
)

Transform indices of elements - IND(0,:)

In IND(0,:) indices IMAP12(1,:) are converted into IMAP12(2,:). If IND(0,:) is not found in IMAP12(1,:), then the line is not taken into the transformed index.

Parameters
index2Transformed index
index1Original index
[in]imap12Transformation table: IMAP12(1,:) -> IMAP12(2,:)
[in]n12Length of the transformation table
[out]ierrError code

Definition at line 788 of file index.f.

References gridman_index_allocate(), gridman_index_check(), gridman::gridman_sp, and gridman::gridman_unit.

Referenced by gridman_grid2d_cut(), and gridman_grid2d_merge().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gridman_index_merge ( type(gridman_index)  INDEX,
type(gridman_index)  INDEX1,
type(gridman_index)  INDEX2,
integer, intent(out)  IERR 
)

Merge INDEX2 into INDEX1.

"Merging" means that elements of INDEX1 are taken without changes. Elements of INDEX2 which do not yet appear in INDEX1 added. Only indexes with equal number of columns (NINDEX) can be merged

WARNING: INDEX will be overwritten if alreay exists!

Parameters
indexResulting index object
index1Index object which stay conserved
index2Index object which is merged into INDEX1
[out]ierrError code

Definition at line 880 of file index.f.

References gridman_index_allocate(), gridman_index_check(), gridman_index_deallocate(), gridman::gridman_sp, and gridman::gridman_unit.

Here is the call graph for this function: