LCOV - code coverage report
Current view: top level - io - banddos_io.F90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 182 183 99.5 %
Date: 2024-04-19 04:21:58 Functions: 6 6 100.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------
       2             : ! Copyright (c) 2018 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
       3             : ! This file is part of FLEUR and available as free software under the conditions
       4             : ! of the MIT license as expressed in the LICENSE file in more detail.
       5             : !--------------------------------------------------------------------------------
       6             : 
       7             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       8             : !
       9             : ! This module is used to write out data that can be used to generate augmented
      10             : ! DOS or bandstructure plots. For the augmentation additional data, e.g., weights
      11             : ! for the orbital character of states, is stored.
      12             : !
      13             : !                                          GM' 2018
      14             : !
      15             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      16             : 
      17             : MODULE m_banddos_io
      18             : 
      19             : #ifdef CPP_HDF
      20             : 
      21             :    USE hdf5
      22             :    USE m_hdf_tools
      23             : 
      24             :    IMPLICIT NONE
      25             : 
      26             :    PUBLIC openBandDOSFile, closeBandDOSFile, writeBandData, writedosData
      27             : 
      28             :    CONTAINS
      29             : 
      30         190 :    SUBROUTINE openBandDOSFile(fileID, input, atoms, cell, kpts, sym, banddos, eFermiPrev)
      31             : 
      32             :       USE m_types_input
      33             :       USE m_types_atoms
      34             :       USE m_types_cell
      35             :       USE m_types_kpts
      36             :       USE m_types_sym
      37             :       USE m_types_banddos
      38             : 
      39             :       USE hdf5
      40             :       !USE m_cdn_io
      41             : 
      42             :       TYPE(t_input),   INTENT(IN)  :: input
      43             :       TYPE(t_atoms),   INTENT(IN)  :: atoms
      44             :       TYPE(t_cell),    INTENT(IN)  :: cell
      45             :       TYPE(t_kpts),    INTENT(IN)  :: kpts
      46             :       TYPE(t_sym),     INTENT(IN)  :: sym
      47             :       TYPE(t_banddos), INTENT(IN)  :: banddos
      48             : 
      49             :       INTEGER(HID_T),       INTENT(OUT) :: fileID
      50             :       REAL,INTENT(IN)           :: eFermiPrev
      51             : 
      52             : 
      53             :       LOGICAL           :: l_exist
      54             :       CHARACTER(LEN=30) :: filename
      55             :       INTEGER(HID_T)    :: metaGroupID
      56             :       INTEGER(HID_T)    :: generalGroupID
      57             :       INTEGER(HID_T)    :: cellGroupID
      58             :       INTEGER(HID_T)    :: atomsGroupID
      59             :       INTEGER(HID_T)    :: kptsGroupID
      60             : 
      61             :       INTEGER(HID_T)    :: stringTypeID
      62             :       INTEGER(SIZE_T)   :: stringLength
      63             : 
      64             :       INTEGER(HID_T)    :: bravaisMatrixSpaceID, bravaisMatrixSetID
      65             :       INTEGER(HID_T)    :: reciprocalCellSpaceID, reciprocalCellSetID
      66             :       INTEGER(HID_T)    :: rotMatricesSpaceID, rotMatricesSetID
      67             :       INTEGER(HID_T)    :: transVecsSpaceID, transVecsSetID
      68             : 
      69             :       INTEGER(HID_T)    :: atomPosSpaceID, atomPosSetID
      70             :       INTEGER(HID_T)    :: atomicNumbersSpaceID, atomicNumbersSetID
      71             :       INTEGER(HID_T)    :: equivAtomsClassSpaceID, equivAtomsClassSetID
      72             : 
      73             :       INTEGER(HID_T)    :: kptCoordSpaceID, kptCoordSetID
      74             :       INTEGER(HID_T)    :: kptWeightSpaceID, kptWeightSetID
      75             :       INTEGER(HID_T)    :: kptSPLabelsSpaceID, kptSPLabelsSetID
      76             :       INTEGER(HID_T)    :: kptsSPIndicesSpaceID, kptsSPIndicesSetID
      77             : 
      78             :       INTEGER           :: iType, j, iAtom
      79             : 
      80             :       INTEGER           :: hdfError, dimsInt(7)
      81             :       INTEGER           :: version
      82             : 
      83             :       LOGICAL           :: l_error
      84             : 
      85           5 :       INTEGER           :: atomicNumbers(atoms%nat)
      86           5 :       INTEGER           :: equivAtomsGroup(atoms%nat)
      87             : 
      88             :       INTEGER(HSIZE_T)  :: dims(7)
      89             : 
      90           5 :       version = 2
      91           5 :       filename = 'banddos.hdf'
      92             : 
      93           5 :       INQUIRE(FILE=TRIM(ADJUSTL(filename)),EXIST=l_exist)
      94           5 :       IF(l_exist) THEN
      95           3 :          CALL system('rm '//TRIM(ADJUSTL(filename)))
      96             :       END IF
      97             : 
      98           5 :       CALL h5fcreate_f(TRIM(ADJUSTL(filename)), H5F_ACC_TRUNC_F, fileID, hdfError, H5P_DEFAULT_F, H5P_DEFAULT_F)
      99             : 
     100           5 :       CALL h5gcreate_f(fileID, '/meta', metaGroupID, hdfError)
     101           5 :       CALL io_write_attint0(metaGroupID,'version',version)
     102           5 :       CALL h5gclose_f(metaGroupID, hdfError)
     103             : 
     104             : 
     105             : 
     106           5 :       CALL h5gcreate_f(fileID, '/general', generalGroupID, hdfError)
     107           5 :       CALL io_write_attint0(generalGroupID,'spins',input%jspins)
     108           5 :       CALL io_write_attreal0(generalGroupID,'lastFermiEnergy',eFermiPrev)
     109           5 :       CALL io_write_attreal0(generalGroupID,'valenceCharge',input%zelec)
     110           5 :       CALL io_write_attlog0(generalGroupID,'bandUnfolding',banddos%unfoldband)
     111           5 :       CALL h5gclose_f(generalGroupID, hdfError)
     112             : 
     113           5 :       CALL h5gcreate_f(fileID, '/cell', cellGroupID, hdfError)
     114             : 
     115           5 :       CALL io_write_attint0(cellGroupID,'nop',sym%nop)
     116           5 :       CALL io_write_attint0(cellGroupID,'nop2',sym%nop2)
     117           5 :       CALL io_write_attlog0(cellGroupID,'film',input%film)
     118             : 
     119          15 :       dims(:2)=(/3,3/)
     120          40 :       dimsInt=dims
     121           5 :       CALL h5screate_simple_f(2,dims(:2),bravaisMatrixSpaceID,hdfError)
     122           5 :       CALL h5dcreate_f(cellGroupID, "bravaisMatrix", H5T_NATIVE_DOUBLE, bravaisMatrixSpaceID, bravaisMatrixSetID, hdfError)
     123           5 :       CALL h5sclose_f(bravaisMatrixSpaceID,hdfError)
     124           5 :       CALL io_write_real2(bravaisMatrixSetID,(/1,1/),dimsInt(:2),"amat",cell%amat)
     125           5 :       CALL h5dclose_f(bravaisMatrixSetID, hdfError)
     126             : 
     127          15 :       dims(:2)=(/3,3/)
     128          40 :       dimsInt=dims
     129           5 :       CALL h5screate_simple_f(2,dims(:2),reciprocalCellSpaceID,hdfError)
     130           5 :       CALL h5dcreate_f(cellGroupID, "reciprocalCell", H5T_NATIVE_DOUBLE, reciprocalCellSpaceID, reciprocalCellSetID, hdfError)
     131           5 :       CALL h5sclose_f(reciprocalCellSpaceID,hdfError)
     132           5 :       CALL io_write_real2(reciprocalCellSetID,(/1,1/),dimsInt(:2),"bmar",cell%bmat)
     133           5 :       CALL h5dclose_f(reciprocalCellSetID, hdfError)
     134             : 
     135          20 :       dims(:3)=(/3,3,sym%nop/)
     136          40 :       dimsInt=dims
     137           5 :       CALL h5screate_simple_f(3,dims(:3),rotMatricesSpaceID,hdfError)
     138           5 :       CALL h5dcreate_f(cellGroupID, "symRotMatrices", H5T_NATIVE_INTEGER, rotMatricesSpaceID, rotMatricesSetID, hdfError)
     139           5 :       CALL h5sclose_f(rotMatricesSpaceID,hdfError)
     140           5 :       CALL io_write_integer3(rotMatricesSetID,(/1,1,1/),dimsInt(:3),"mrot",sym%mrot(:,:,:sym%nop))
     141           5 :       CALL h5dclose_f(rotMatricesSetID, hdfError)
     142             : 
     143          15 :       dims(:2)=(/3,sym%nop/)
     144          40 :       dimsInt=dims
     145           5 :       CALL h5screate_simple_f(2,dims(:2),transVecsSpaceID,hdfError)
     146           5 :       CALL h5dcreate_f(cellGroupID, "symTransVecs", H5T_NATIVE_DOUBLE, transVecsSpaceID, transVecsSetID, hdfError)
     147           5 :       CALL h5sclose_f(transVecsSpaceID,hdfError)
     148           5 :       CALL io_write_real2(transVecsSetID,(/1,1/),dimsInt(:2),"tau",sym%tau(:,:sym%nop))
     149           5 :       CALL h5dclose_f(transVecsSetID, hdfError)
     150             : 
     151           5 :       CALL h5gclose_f(cellGroupID, hdfError)
     152             : 
     153           5 :       iAtom = 0
     154          15 :       DO iType = 1, atoms%ntype
     155          29 :          DO j = 1, atoms%neq(iType)
     156          14 :             iAtom = iAtom + 1
     157          14 :             atomicNumbers(iAtom) = atoms%nz(iType)
     158          24 :             equivAtomsGroup(iAtom) = iType
     159             :          END DO
     160             :       END DO
     161             : 
     162           5 :       CALL h5gcreate_f(fileID, '/atoms', atomsGroupID, hdfError)
     163           5 :       CALL io_write_attint0(atomsGroupID,'nAtoms',atoms%nat)
     164           5 :       CALL io_write_attint0(atomsGroupID,'nTypes',atoms%ntype)
     165             : 
     166          15 :       dims(:2)=(/3,atoms%nat/)
     167          40 :       dimsInt=dims
     168           5 :       CALL h5screate_simple_f(2,dims(:2),atomPosSpaceID,hdfError)
     169           5 :       CALL h5dcreate_f(atomsGroupID, "positions", H5T_NATIVE_DOUBLE, atomPosSpaceID, atomPosSetID, hdfError)
     170           5 :       CALL h5sclose_f(atomPosSpaceID,hdfError)
     171           5 :       CALL io_write_real2(atomPosSetID,(/1,1/),dimsInt(:2),"taual",atoms%taual)
     172           5 :       CALL h5dclose_f(atomPosSetID, hdfError)
     173             : 
     174          10 :       dims(:1)=(/atoms%nat/)
     175          40 :       dimsInt=dims
     176           5 :       CALL h5screate_simple_f(1,dims(:1),atomicNumbersSpaceID,hdfError)
     177           5 :       CALL h5dcreate_f(atomsGroupID, "atomicNumbers", H5T_NATIVE_INTEGER, atomicNumbersSpaceID, atomicNumbersSetID, hdfError)
     178           5 :       CALL h5sclose_f(atomicNumbersSpaceID,hdfError)
     179           5 :       CALL io_write_integer1(atomicNumbersSetID,(/1/),dimsInt(:1),"atomicNumbers",atomicNumbers)
     180           5 :       CALL h5dclose_f(atomicNumbersSetID, hdfError)
     181             : 
     182          10 :       dims(:1)=(/atoms%nat/)
     183          40 :       dimsInt=dims
     184           5 :       CALL h5screate_simple_f(1,dims(:1),equivAtomsClassSpaceID,hdfError)
     185           5 :       CALL h5dcreate_f(atomsGroupID, "equivAtomsGroup", H5T_NATIVE_INTEGER, equivAtomsClassSpaceID, equivAtomsClassSetID, hdfError)
     186           5 :       CALL h5sclose_f(equivAtomsClassSpaceID,hdfError)
     187           5 :       CALL io_write_integer1(equivAtomsClassSetID,(/1/),dimsInt(:1),"equivAtomsGroup",equivAtomsGroup)
     188           5 :       CALL h5dclose_f(equivAtomsClassSetID, hdfError)
     189             : 
     190           5 :       CALL h5gclose_f(atomsGroupID, hdfError)
     191             : 
     192           5 :       CALL h5gcreate_f(fileID, '/kpts', kptsGroupID, hdfError)
     193             : 
     194           5 :       CALL io_write_attint0(kptsGroupID,'nkpt',kpts%nkpt)
     195           5 :       CALL io_write_attint0(kptsGroupID,'nSpecialPoints',kpts%numSpecialPoints)
     196             : 
     197          15 :       dims(:2)=(/3,kpts%nkpt/)
     198          40 :       dimsInt=dims
     199           5 :       CALL h5screate_simple_f(2,dims(:2),kptCoordSpaceID,hdfError)
     200           5 :       CALL h5dcreate_f(kptsGroupID, "coordinates", H5T_NATIVE_DOUBLE, kptCoordSpaceID, kptCoordSetID, hdfError)
     201           5 :       CALL h5sclose_f(kptCoordSpaceID,hdfError)
     202           5 :       CALL io_write_real2(kptCoordSetID,(/1,1/),dimsInt(:2),"bk",kpts%bk)
     203           5 :       CALL h5dclose_f(kptCoordSetID, hdfError)
     204             : 
     205          10 :       dims(:1)=(/kpts%nkpt/)
     206          40 :       dimsInt=dims
     207           5 :       CALL h5screate_simple_f(1,dims(:1),kptWeightSpaceID,hdfError)
     208           5 :       CALL h5dcreate_f(kptsGroupID, "weights", H5T_NATIVE_DOUBLE, kptWeightSpaceID, kptWeightSetID, hdfError)
     209           5 :       CALL h5sclose_f(kptWeightSpaceID,hdfError)
     210           5 :       CALL io_write_real1(kptWeightSetID,(/1/),dimsInt(:1),"wtkpt",kpts%wtkpt)
     211           5 :       CALL h5dclose_f(kptWeightSetID, hdfError)
     212             : 
     213           5 :       IF (ALLOCATED(kpts%specialPointIndices)) THEN
     214           2 :          stringLength = LEN(kpts%specialPointNames(:))
     215           2 :          CALL h5tcopy_f(H5T_NATIVE_CHARACTER, stringTypeID, hdfError)
     216           2 :          CALL h5tset_size_f(stringTypeID, stringLength, hdfError)
     217           2 :          CALL h5tset_strpad_f(stringTypeID, H5T_STR_SPACEPAD_F, hdfError)
     218           2 :          CALL h5tset_cset_f(stringTypeID, H5T_CSET_ASCII_F, hdfError)
     219           4 :          dims(:1)=(/kpts%numSpecialPoints/)
     220          16 :          dimsInt=dims
     221           2 :          CALL h5screate_simple_f(1,dims(:1),kptSPLabelsSpaceID,hdfError)
     222           2 :          CALL h5dcreate_f(kptsGroupID, "specialPointLabels", stringTypeID, kptSPLabelsSpaceID, kptSPLabelsSetID, hdfError)
     223           2 :          CALL h5tclose_f(stringTypeID,hdfError)
     224           2 :          CALL h5sclose_f(kptSPLabelsSpaceID,hdfError)
     225           2 :          CALL io_write_string1(kptSPLabelsSetID,dimsInt(:1),LEN(kpts%specialPointNames(:)),kpts%specialPointNames)
     226           2 :          CALL h5dclose_f(kptSPLabelsSetID, hdfError)
     227             : 
     228           4 :          dims(:1)=(/kpts%numSpecialPoints/)
     229          16 :          dimsInt=dims
     230           2 :          CALL h5screate_simple_f(1,dims(:1),kptsSPIndicesSpaceID,hdfError)
     231           2 :          CALL h5dcreate_f(kptsGroupID, "specialPointIndices", H5T_NATIVE_INTEGER, kptsSPIndicesSpaceID, kptsSPIndicesSetID, hdfError)
     232           2 :          CALL h5sclose_f(kptsSPIndicesSpaceID,hdfError)
     233           2 :          CALL io_write_integer1(kptsSPIndicesSetID,(/1/),dimsInt(:1),"indices",kpts%specialPointIndices)
     234           2 :          CALL h5dclose_f(kptsSPIndicesSetID, hdfError)
     235             :       END IF
     236             : 
     237           5 :       CALL h5gclose_f(kptsGroupID, hdfError)
     238             : 
     239           5 :    END SUBROUTINE
     240             : 
     241           5 :    SUBROUTINE closeBandDOSFile(fileID)
     242             : 
     243             :       INTEGER(HID_T), INTENT(IN)  :: fileID
     244             : 
     245             :       INTEGER hdfError
     246             : 
     247           5 :       CALL h5fclose_f(fileID, hdfError)
     248             : 
     249           5 :    END SUBROUTINE
     250             : 
     251          27 :    SUBROUTINE writeBandData(fileID,kpts,name_of_dos,weight_name,weight_eig,eig)
     252             :       USE m_types_kpts
     253             :       character(len=*),intent(in) :: name_of_dos
     254             :       character(len=*),intent(in) :: weight_name
     255             :       real,intent(in)             :: weight_eig(:,:,:)
     256             :       real,optional,intent(in)    :: eig(:,:,:)
     257             :       type(t_kpts),intent(in)     :: kpts
     258             : 
     259             : 
     260             :       INTEGER(HID_T),  INTENT(IN) :: fileID
     261             :       INTEGER                     :: n
     262             : 
     263             :       INTEGER(HID_T)    :: BSGroupID,groupID
     264             :       INTEGER           :: hdfError
     265             : 
     266          27 :       if (io_groupexists(fileID,name_of_dos)) THEN
     267          25 :         call io_gopen(fileID,name_of_dos,groupID)
     268             :       ELSE
     269           2 :         call h5gcreate_f(fileID, name_of_dos, GroupID, hdfError)
     270             :       endif
     271          27 :       if (io_groupexists(GroupID,"BS")) THEN
     272          25 :         call io_gopen(GroupID,"BS",BSgroupID)
     273             :       ELSE
     274           2 :         CALL h5gcreate_f(GroupID, "BS", BSGroupID, hdfError)
     275             :       endif
     276          27 :       IF (PRESENT(eig)) THEN
     277          26 :          if (.not.io_dataexists(BSGroupID,"eigenvalues")) call io_write_var(BSGroupID,"eigenvalues",eig)
     278             :       END IF
     279          27 :       call io_write_var(BSGroupID,weight_name,weight_eig(:,:,:))
     280          27 :       CALL h5gclose_f(BSGroupID, hdfError)
     281          27 :       CALL h5gclose_f(GroupID, hdfError)
     282          27 :    END SUBROUTINE
     283             : 
     284          82 :    SUBROUTINE writedosData(fileID,name_of_dos,e_grid,weight_name,dos)
     285             :      character(len=*),intent(in) :: name_of_dos
     286             :      character(len=*),intent(in) :: weight_name
     287             :      real,intent(in):: e_grid(:),dos(:,:)
     288             :       INTEGER(HID_T),  INTENT(IN) :: fileID
     289             : 
     290             :       INTEGER                     :: n
     291             : 
     292             :       INTEGER(HID_T)    :: DOSGroupID,groupID
     293             :       INTEGER           :: hdfError
     294             : 
     295          82 :       if (io_groupexists(fileID,name_of_dos)) THEN
     296          77 :         call io_gopen(fileID,name_of_dos,groupID)
     297             :       ELSE
     298           5 :         call h5gcreate_f(fileID, name_of_dos, GroupID, hdfError)
     299             :       endif
     300          82 :       if (io_groupexists(groupID,"DOS")) then
     301          77 :         call io_gopen(groupID,"DOS",DOSGroupID)
     302             :       ELSE
     303           5 :         CALL h5gcreate_f(GroupID, "DOS", DOSGroupID, hdfError)
     304             :       endif
     305          82 :       if (.not.io_dataexists(DOSGroupID,"energyGrid")) call io_write_var(DOSGroupID,"energyGrid",e_grid)
     306          82 :       print *,name_of_dos,weight_name
     307          82 :       call io_write_var(DOSGroupID,weight_name,dos(:,:))
     308          82 :       CALL h5gclose_f(DOSGroupID, hdfError)
     309          82 :       CALL h5gclose_f(GroupID, hdfError)
     310             : 
     311          82 :    END SUBROUTINE
     312             : 
     313          82 :    SUBROUTINE writeEVData(fileID,name_of_dos,weight_name,eig,weight_eig)
     314             :       character(len=*),intent(in) :: name_of_dos
     315             :       character(len=*),intent(in) :: weight_name
     316             :       real,intent(in)             :: eig(:,:,:),weight_eig(:,:,:)
     317             : 
     318             :       INTEGER(HID_T),  INTENT(IN) :: fileID
     319             :       INTEGER                     :: n
     320             : 
     321             :       INTEGER(HID_T)    :: EVGroupID,groupID
     322             :       INTEGER           :: hdfError
     323             : 
     324          82 :       if (io_groupexists(fileID,name_of_dos)) THEN
     325          82 :         call io_gopen(fileID,name_of_dos,groupID)
     326             :       ELSE
     327           0 :         call h5gcreate_f(fileID, name_of_dos, GroupID, hdfError)
     328             :       endif
     329          82 :       if (io_groupexists(GroupID,"EV")) THEN
     330          77 :         call io_gopen(GroupID,"EV",EVgroupID)
     331             :       ELSE
     332           5 :         CALL h5gcreate_f(GroupID, "EV", EVGroupID, hdfError)
     333             :       endif
     334          82 :       if (.not.io_dataexists(EVGroupID,"eigenvalues")) call io_write_var(EVGroupID,"eigenvalues",eig)
     335          82 :       call io_write_var(EVGroupID,weight_name,weight_eig(:,:,:))
     336          82 :       CALL h5gclose_f(EVGroupID, hdfError)
     337          82 :       CALL h5gclose_f(GroupID, hdfError)
     338          82 :    END SUBROUTINE
     339             : 
     340           2 :    SUBROUTINE io_write_string1(datasetID,dims,stringLength,dataArray)
     341             : 
     342             :       USE hdf5
     343             :       USE m_hdf_tools4
     344             : 
     345             :       IMPLICIT NONE
     346             : 
     347             :       INTEGER(HID_T),              INTENT(IN) :: datasetID
     348             :       INTEGER,                     INTENT(IN) :: dims(1)
     349             :       INTEGER,                     INTENT(IN) :: stringLength
     350             :       CHARACTER(LEN=stringLength), INTENT(IN) :: dataArray(:)
     351             : 
     352             :       INTEGER          :: hdfError
     353             :       INTEGER(HID_T)   :: dataspaceID, memSpaceID
     354             :       INTEGER(HID_T)   :: stringTypeID
     355             :       INTEGER(HID_t)   :: trans
     356             :       INTEGER(HSIZE_t) :: memOffset(1), fncount(1)
     357             :       INTEGER(HSIZE_t) :: dimsHDF(1)
     358             :       INTEGER(SIZE_T)  :: stringLengthHDF
     359             : 
     360           2 :       stringLengthHDF = stringLength
     361           4 :       dimsHDF(:) = dims(:)
     362           2 :       memOffset(:) = 0
     363           4 :       fnCount(:) = dims(:)
     364             : 
     365           2 :       trans = gettransprop()
     366             : 
     367           2 :       CALL h5tcopy_f(H5T_NATIVE_CHARACTER, stringTypeID, hdfError)
     368           2 :       CALL h5tset_size_f(stringTypeID, stringLengthHDF, hdfError)
     369           2 :       CALL h5tset_strpad_f(stringTypeID, H5T_STR_SPACEPAD_F, hdfError)
     370           2 :       CALL h5tset_cset_f(stringTypeID, H5T_CSET_ASCII_F, hdfError)
     371             : 
     372           2 :       CALL h5dget_space_f(datasetID,dataspaceID,hdfError)
     373           2 :       CALL h5sselect_hyperslab_f(dataspaceID,H5S_SELECT_SET_F,memOffset,fncount,hdfError)
     374           2 :       CALL h5screate_simple_f(1,dimsHDF,memSpaceID,hdfError)
     375           2 :       CALL h5dwrite_f(datasetID,stringTypeID,dataArray,dimsHDF,hdfError,memSpaceID,dataspaceID,trans)
     376           2 :       CALL h5sclose_f(memSpaceID,hdfError)
     377           2 :       CALL h5sclose_f(dataspaceID,hdfError)
     378           2 :       CALL cleartransprop(trans)
     379             : 
     380           2 :       CALL h5tclose_f(stringTypeID,hdfError)
     381             : 
     382           2 :       CALL io_check("io_write_string1 !",hdfError)
     383             : 
     384           2 :    END SUBROUTINE io_write_string1
     385             : 
     386             : #endif
     387             : 
     388             : END MODULE m_banddos_io

Generated by: LCOV version 1.14