LCOV - code coverage report
Current view: top level - io - banddos_io.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 172 189 91.0 %
Date: 2019-09-08 04:53:50 Functions: 4 4 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, writeBandDOSData
      27             : 
      28             :    CONTAINS
      29             : 
      30           7 :    SUBROUTINE openBandDOSFile(fileID, input, atoms, cell, kpts, banddos)
      31             : 
      32             :       USE m_types
      33             :       USE hdf5
      34             :       USE m_cdn_io
      35             : 
      36             :       TYPE(t_input),   INTENT(IN)  :: input
      37             :       TYPE(t_atoms),   INTENT(IN)  :: atoms
      38             :       TYPE(t_cell),    INTENT(IN)  :: cell
      39             :       TYPE(t_kpts),    INTENT(IN)  :: kpts
      40             :       TYPE(t_banddos), INTENT(IN)  :: banddos
      41             : 
      42             :       INTEGER(HID_T),       INTENT(OUT) :: fileID
      43             : 
      44             :       LOGICAL           :: l_exist
      45             :       CHARACTER(LEN=30) :: filename
      46             :       INTEGER(HID_T)    :: metaGroupID
      47             :       INTEGER(HID_T)    :: generalGroupID
      48             :       INTEGER(HID_T)    :: cellGroupID
      49             :       INTEGER(HID_T)    :: atomsGroupID
      50             :       INTEGER(HID_T)    :: kptsGroupID
      51             : 
      52             :       INTEGER(HID_T)    :: stringTypeID
      53             :       INTEGER(SIZE_T)   :: stringLength
      54             : 
      55             :       INTEGER(HID_T)    :: bravaisMatrixSpaceID, bravaisMatrixSetID
      56             :       INTEGER(HID_T)    :: reciprocalCellSpaceID, reciprocalCellSetID
      57             : 
      58             :       INTEGER(HID_T)    :: atomPosSpaceID, atomPosSetID
      59             :       INTEGER(HID_T)    :: atomicNumbersSpaceID, atomicNumbersSetID
      60             :       INTEGER(HID_T)    :: equivAtomsClassSpaceID, equivAtomsClassSetID
      61             : 
      62             :       INTEGER(HID_T)    :: kptCoordSpaceID, kptCoordSetID
      63             :       INTEGER(HID_T)    :: kptWeightSpaceID, kptWeightSetID
      64             :       INTEGER(HID_T)    :: kptSPLabelsSpaceID, kptSPLabelsSetID
      65             :       INTEGER(HID_T)    :: kptsSPIndicesSpaceID, kptsSPIndicesSetID
      66             : 
      67             :       INTEGER           :: iType, j, iAtom
      68             : 
      69             :       INTEGER           :: hdfError, dimsInt(7)
      70             :       INTEGER           :: version
      71             :       REAL              :: eFermiPrev
      72             :       LOGICAL           :: l_error
      73             : 
      74          14 :       INTEGER           :: atomicNumbers(atoms%nat)
      75          14 :       INTEGER           :: equivAtomsGroup(atoms%nat)
      76             : 
      77             :       INTEGER(HSIZE_T)  :: dims(7)
      78             : 
      79           7 :       version = 1
      80           7 :       filename = 'banddos.hdf'
      81             : 
      82           7 :       INQUIRE(FILE=TRIM(ADJUSTL(filename)),EXIST=l_exist)
      83           7 :       IF(l_exist) THEN
      84           2 :          CALL system('rm '//TRIM(ADJUSTL(filename)))       
      85             :       END IF
      86             : 
      87           7 :       CALL h5fcreate_f(TRIM(ADJUSTL(filename)), H5F_ACC_TRUNC_F, fileID, hdfError, H5P_DEFAULT_F, H5P_DEFAULT_F)
      88             : 
      89           7 :       CALL h5gcreate_f(fileID, '/meta', metaGroupID, hdfError)
      90           7 :       CALL io_write_attint0(metaGroupID,'version',version)
      91           7 :       CALL h5gclose_f(metaGroupID, hdfError)
      92             : 
      93           7 :       CALL readPrevEFermi(eFermiPrev,l_error)
      94           7 :       IF(l_error) THEN
      95             :          ! No previous eFermi available
      96           0 :          eFermiPrev = 0.0
      97             :       END IF
      98             : 
      99           7 :       CALL h5gcreate_f(fileID, '/general', generalGroupID, hdfError)
     100           7 :       CALL io_write_attint0(generalGroupID,'spins',input%jspins)
     101           7 :       CALL io_write_attreal0(generalGroupID,'lastFermiEnergy',eFermiPrev)
     102           7 :       CALL io_write_attlog0(generalGroupID,'bandUnfolding',banddos%unfoldband)
     103           7 :       CALL h5gclose_f(generalGroupID, hdfError)
     104             : 
     105           7 :       CALL h5gcreate_f(fileID, '/cell', cellGroupID, hdfError)
     106             : 
     107          21 :       dims(:2)=(/3,3/)
     108          56 :       dimsInt=dims
     109           7 :       CALL h5screate_simple_f(2,dims(:2),bravaisMatrixSpaceID,hdfError)
     110           7 :       CALL h5dcreate_f(cellGroupID, "bravaisMatrix", H5T_NATIVE_DOUBLE, bravaisMatrixSpaceID, bravaisMatrixSetID, hdfError)
     111           7 :       CALL h5sclose_f(bravaisMatrixSpaceID,hdfError)
     112           7 :       CALL io_write_real2(bravaisMatrixSetID,(/1,1/),dimsInt(:2),cell%amat)
     113           7 :       CALL h5dclose_f(bravaisMatrixSetID, hdfError)
     114             : 
     115          21 :       dims(:2)=(/3,3/)
     116          56 :       dimsInt=dims
     117           7 :       CALL h5screate_simple_f(2,dims(:2),reciprocalCellSpaceID,hdfError)
     118           7 :       CALL h5dcreate_f(cellGroupID, "reciprocalCell", H5T_NATIVE_DOUBLE, reciprocalCellSpaceID, reciprocalCellSetID, hdfError)
     119           7 :       CALL h5sclose_f(reciprocalCellSpaceID,hdfError)
     120           7 :       CALL io_write_real2(reciprocalCellSetID,(/1,1/),dimsInt(:2),cell%bmat)
     121           7 :       CALL h5dclose_f(reciprocalCellSetID, hdfError)
     122             : 
     123           7 :       CALL h5gclose_f(cellGroupID, hdfError)
     124             : 
     125           7 :       iAtom = 0
     126          21 :       DO iType = 1, atoms%ntype
     127          35 :          DO j = 1, atoms%neq(iType)
     128          14 :             iAtom = iAtom + 1
     129          14 :             atomicNumbers(iAtom) = atoms%nz(iType)
     130          28 :             equivAtomsGroup(iAtom) = iType
     131             :          END DO
     132             :       END DO
     133             : 
     134           7 :       CALL h5gcreate_f(fileID, '/atoms', atomsGroupID, hdfError)
     135           7 :       CALL io_write_attint0(atomsGroupID,'nAtoms',atoms%nat)
     136           7 :       CALL io_write_attint0(atomsGroupID,'nTypes',atoms%ntype)
     137             : 
     138           7 :       dims(:2)=(/3,atoms%nat/)
     139          56 :       dimsInt=dims
     140           7 :       CALL h5screate_simple_f(2,dims(:2),atomPosSpaceID,hdfError)
     141           7 :       CALL h5dcreate_f(atomsGroupID, "positions", H5T_NATIVE_DOUBLE, atomPosSpaceID, atomPosSetID, hdfError)
     142           7 :       CALL h5sclose_f(atomPosSpaceID,hdfError)
     143           7 :       CALL io_write_real2(atomPosSetID,(/1,1/),dimsInt(:2),atoms%taual)
     144           7 :       CALL h5dclose_f(atomPosSetID, hdfError)
     145             : 
     146           7 :       dims(:1)=(/atoms%nat/)
     147          56 :       dimsInt=dims
     148           7 :       CALL h5screate_simple_f(1,dims(:1),atomicNumbersSpaceID,hdfError)
     149           7 :       CALL h5dcreate_f(atomsGroupID, "atomicNumbers", H5T_NATIVE_INTEGER, atomicNumbersSpaceID, atomicNumbersSetID, hdfError)
     150           7 :       CALL h5sclose_f(atomicNumbersSpaceID,hdfError)
     151           7 :       CALL io_write_integer1(atomicNumbersSetID,(/1/),dimsInt(:1),atomicNumbers)
     152           7 :       CALL h5dclose_f(atomicNumbersSetID, hdfError)
     153             : 
     154           7 :       dims(:1)=(/atoms%nat/)
     155          56 :       dimsInt=dims
     156           7 :       CALL h5screate_simple_f(1,dims(:1),equivAtomsClassSpaceID,hdfError)
     157           7 :       CALL h5dcreate_f(atomsGroupID, "equivAtomsGroup", H5T_NATIVE_INTEGER, equivAtomsClassSpaceID, equivAtomsClassSetID, hdfError)
     158           7 :       CALL h5sclose_f(equivAtomsClassSpaceID,hdfError)
     159           7 :       CALL io_write_integer1(equivAtomsClassSetID,(/1/),dimsInt(:1),equivAtomsGroup)
     160           7 :       CALL h5dclose_f(equivAtomsClassSetID, hdfError)
     161             : 
     162           7 :       CALL h5gclose_f(atomsGroupID, hdfError)
     163             : 
     164           7 :       CALL h5gcreate_f(fileID, '/kpts', kptsGroupID, hdfError)
     165             : 
     166           7 :       CALL io_write_attint0(kptsGroupID,'nkpt',kpts%nkpt)
     167           7 :       CALL io_write_attint0(kptsGroupID,'nSpecialPoints',kpts%numSpecialPoints)
     168             : 
     169           7 :       dims(:2)=(/3,kpts%nkpt/)
     170          56 :       dimsInt=dims
     171           7 :       CALL h5screate_simple_f(2,dims(:2),kptCoordSpaceID,hdfError)
     172           7 :       CALL h5dcreate_f(kptsGroupID, "coordinates", H5T_NATIVE_DOUBLE, kptCoordSpaceID, kptCoordSetID, hdfError)
     173           7 :       CALL h5sclose_f(kptCoordSpaceID,hdfError)
     174           7 :       CALL io_write_real2(kptCoordSetID,(/1,1/),dimsInt(:2),kpts%bk)
     175           7 :       CALL h5dclose_f(kptCoordSetID, hdfError)
     176             : 
     177           7 :       dims(:1)=(/kpts%nkpt/)
     178          56 :       dimsInt=dims
     179           7 :       CALL h5screate_simple_f(1,dims(:1),kptWeightSpaceID,hdfError)
     180           7 :       CALL h5dcreate_f(kptsGroupID, "weights", H5T_NATIVE_DOUBLE, kptWeightSpaceID, kptWeightSetID, hdfError)
     181           7 :       CALL h5sclose_f(kptWeightSpaceID,hdfError)
     182           7 :       CALL io_write_real1(kptWeightSetID,(/1/),dimsInt(:1),kpts%wtkpt)
     183           7 :       CALL h5dclose_f(kptWeightSetID, hdfError)
     184             : 
     185           7 :       IF (ALLOCATED(kpts%specialPointIndices)) THEN
     186           1 :          stringLength = LEN(kpts%specialPointNames(:))
     187           1 :          CALL h5tcopy_f(H5T_NATIVE_CHARACTER, stringTypeID, hdfError)
     188           1 :          CALL h5tset_size_f(stringTypeID, stringLength, hdfError)
     189           1 :          CALL h5tset_strpad_f(stringTypeID, H5T_STR_SPACEPAD_F, hdfError)
     190           1 :          CALL h5tset_cset_f(stringTypeID, H5T_CSET_ASCII_F, hdfError)
     191           1 :          dims(:1)=(/kpts%numSpecialPoints/)
     192           8 :          dimsInt=dims
     193           1 :          CALL h5screate_simple_f(1,dims(:1),kptSPLabelsSpaceID,hdfError)
     194           1 :          CALL h5dcreate_f(kptsGroupID, "specialPointLabels", stringTypeID, kptSPLabelsSpaceID, kptSPLabelsSetID, hdfError)
     195           1 :          CALL h5tclose_f(stringTypeID,hdfError)
     196           1 :          CALL h5sclose_f(kptSPLabelsSpaceID,hdfError)
     197           1 :          CALL io_write_string1(kptSPLabelsSetID,dimsInt(:1),LEN(kpts%specialPointNames(:)),kpts%specialPointNames)
     198           1 :          CALL h5dclose_f(kptSPLabelsSetID, hdfError)
     199             : 
     200           1 :          dims(:1)=(/kpts%numSpecialPoints/)
     201           8 :          dimsInt=dims
     202           1 :          CALL h5screate_simple_f(1,dims(:1),kptsSPIndicesSpaceID,hdfError)
     203           1 :          CALL h5dcreate_f(kptsGroupID, "specialPointIndices", H5T_NATIVE_INTEGER, kptsSPIndicesSpaceID, kptsSPIndicesSetID, hdfError)
     204           1 :          CALL h5sclose_f(kptsSPIndicesSpaceID,hdfError)
     205           1 :          CALL io_write_integer1(kptsSPIndicesSetID,(/1/),dimsInt(:1),kpts%specialPointIndices)
     206           1 :          CALL h5dclose_f(kptsSPIndicesSetID, hdfError)
     207             :       END IF
     208             : 
     209           7 :       CALL h5gclose_f(kptsGroupID, hdfError)
     210             : 
     211           7 :    END SUBROUTINE
     212             : 
     213           7 :    SUBROUTINE closeBandDOSFile(fileID)
     214             : 
     215             :       INTEGER(HID_T), INTENT(IN)  :: fileID
     216             : 
     217             :       INTEGER hdfError
     218             : 
     219           7 :       CALL h5fclose_f(fileID, hdfError)
     220             : 
     221           7 :    END SUBROUTINE
     222             : 
     223           7 :    SUBROUTINE writeBandDOSData(fileID,input,atoms,cell,kpts,results,banddos,dos,vacuum)
     224             : 
     225             :       USE m_types
     226             : 
     227             :       TYPE(t_input),   INTENT(IN) :: input
     228             :       TYPE(t_atoms),   INTENT(IN) :: atoms
     229             :       TYPE(t_cell),    INTENT(IN) :: cell
     230             :       TYPE(t_kpts),    INTENT(IN) :: kpts
     231             :       TYPE(t_results), INTENT(IN) :: results
     232             :       TYPE(t_banddos), INTENT(IN) :: banddos
     233             :       TYPE(t_dos),     INTENT(IN) :: dos
     234             :       TYPE(t_vacuum),  INTENT(IN) :: vacuum
     235             : 
     236             :       INTEGER                     :: neigd
     237             : 
     238             :       INTEGER(HID_T),  INTENT(IN) :: fileID
     239             : 
     240             :       INTEGER(HID_T)    :: eigenvaluesGroupID
     241             :       INTEGER(HID_T)    :: bandUnfoldingGroupID
     242             : 
     243             :       INTEGER(HID_T)    :: eigenvaluesSpaceID, eigenvaluesSetID
     244             :       INTEGER(HID_T)    :: numFoundEigsSpaceID, numFoundEigsSetID
     245             :       INTEGER(HID_T)    :: lLikeChargeSpaceID, lLikeChargeSetID
     246             :       INTEGER(HID_T)    :: jsymSpaceID, jsymSetID
     247             :       INTEGER(HID_T)    :: ksymSpaceID, ksymSetID
     248             :       INTEGER(HID_T)    :: bUWeightsSpaceID, bUWeightsSetID
     249             :       INTEGER(HID_T)    :: supercellSpaceID, supercellSetID
     250             : 
     251             :       INTEGER           :: hdfError, dimsInt(7)
     252             : 
     253             :       INTEGER(HSIZE_T)  :: dims(7)
     254             : 
     255           7 :       neigd = MAXVAL(results%neig(:,:))
     256             : 
     257           7 :       CALL h5gcreate_f(fileID, '/eigenvalues', eigenvaluesGroupID, hdfError)
     258             : 
     259           7 :       CALL io_write_attint0(eigenvaluesGroupID,'neigd',neigd)
     260           7 :       CALL io_write_attint0(eigenvaluesGroupID,'maxL',3)
     261             : 
     262           7 :       dims(:2)=(/kpts%nkpt,input%jspins/)
     263          56 :       dimsInt=dims
     264           7 :       CALL h5screate_simple_f(2,dims(:2),numFoundEigsSpaceID,hdfError)
     265           7 :       CALL h5dcreate_f(eigenvaluesGroupID, "numFoundEigenvals", H5T_NATIVE_INTEGER, numFoundEigsSpaceID, numFoundEigsSetID, hdfError)
     266           7 :       CALL h5sclose_f(numFoundEigsSpaceID,hdfError)
     267           7 :       CALL io_write_integer2(numFoundEigsSetID,(/1,1/),dimsInt(:2),results%neig)
     268           7 :       CALL h5dclose_f(numFoundEigsSetID, hdfError)
     269             : 
     270           7 :       dims(:3)=(/neigd,kpts%nkpt,input%jspins/)
     271          56 :       dimsInt = dims
     272           7 :       CALL h5screate_simple_f(3,dims(:3),eigenvaluesSpaceID,hdfError)
     273           7 :       CALL h5dcreate_f(eigenvaluesGroupID, "eigenvalues", H5T_NATIVE_DOUBLE, eigenvaluesSpaceID, eigenvaluesSetID, hdfError)
     274           7 :       CALL h5sclose_f(eigenvaluesSpaceID,hdfError)
     275           7 :       CALL io_write_real3(eigenvaluesSetID,(/1,1,1/),dimsInt(:3),results%eig(:neigd,:,:))
     276           7 :       CALL h5dclose_f(eigenvaluesSetID, hdfError)
     277             : 
     278           7 :       dims(:5)=(/4,atoms%ntype,neigd,kpts%nkpt,input%jspins/)
     279          56 :       dimsInt = dims
     280           7 :       CALL h5screate_simple_f(5,dims(:5),lLikeChargeSpaceID,hdfError)
     281           7 :       CALL h5dcreate_f(eigenvaluesGroupID, "lLikeCharge", H5T_NATIVE_DOUBLE, lLikeChargeSpaceID, lLikeChargeSetID, hdfError)
     282           7 :       CALL h5sclose_f(lLikeChargeSpaceID,hdfError)
     283           7 :       CALL io_write_real5(lLikeChargeSetID,(/1,1,1,1,1/),dimsInt(:5),dos%qal(0:3,:,:neigd,:,:))
     284           7 :       CALL h5dclose_f(lLikeChargeSetID, hdfError)
     285             : 
     286           7 :       dims(:3)=(/neigd,kpts%nkpt,input%jspins/)
     287          56 :       dimsInt = dims
     288           7 :       CALL h5screate_simple_f(3,dims(:3),jsymSpaceID,hdfError)
     289           7 :       CALL h5dcreate_f(eigenvaluesGroupID, "jsym", H5T_NATIVE_INTEGER, jsymSpaceID, jsymSetID, hdfError)
     290           7 :       CALL h5sclose_f(jsymSpaceID,hdfError)
     291           7 :       CALL io_write_integer3(jsymSetID,(/1,1,1/),dimsInt(:3),dos%jsym(:neigd,:,:))
     292           7 :       CALL h5dclose_f(jsymSetID, hdfError)
     293             : 
     294           7 :       dims(:3)=(/neigd,kpts%nkpt,input%jspins/)
     295          56 :       dimsInt = dims
     296           7 :       CALL h5screate_simple_f(3,dims(:3),ksymSpaceID,hdfError)
     297           7 :       CALL h5dcreate_f(eigenvaluesGroupID, "ksym", H5T_NATIVE_INTEGER, ksymSpaceID, ksymSetID, hdfError)
     298           7 :       CALL h5sclose_f(ksymSpaceID,hdfError)
     299           7 :       CALL io_write_integer3(ksymSetID,(/1,1,1/),dimsInt(:3),dos%ksym(:neigd,:,:))
     300           7 :       CALL h5dclose_f(ksymSetID, hdfError)
     301             : 
     302           7 :       CALL h5gclose_f(eigenvaluesGroupID, hdfError)
     303             : 
     304           7 :       IF (banddos%unfoldband) THEN
     305           0 :          CALL h5gcreate_f(fileID, '/bandUnfolding', bandUnfoldingGroupID, hdfError)
     306             : 
     307           0 :          dims(:1)=(/3/)
     308           0 :          dimsInt = dims
     309           0 :          CALL h5screate_simple_f(1,dims(:1),supercellSpaceID,hdfError)
     310           0 :          CALL h5dcreate_f(bandUnfoldingGroupID, "supercell", H5T_NATIVE_INTEGER, supercellSpaceID, supercellSetID, hdfError)
     311           0 :          CALL h5sclose_f(supercellSpaceID,hdfError)
     312           0 :          CALL io_write_integer1(supercellSetID,(/1/),dimsInt(:1),(/banddos%s_cell_x,banddos%s_cell_y,banddos%s_cell_z/))
     313           0 :          CALL h5dclose_f(supercellSetID, hdfError)
     314             : 
     315           0 :          dims(:3)=(/neigd,kpts%nkpt,input%jspins/)
     316           0 :          dimsInt = dims
     317           0 :          CALL h5screate_simple_f(3,dims(:3),bUWeightsSpaceID,hdfError)
     318           0 :          CALL h5dcreate_f(bandUnfoldingGroupID, "weights", H5T_NATIVE_DOUBLE, bUWeightsSpaceID, buWeightsSetID, hdfError)
     319           0 :          CALL h5sclose_f(bUWeightsSpaceID,hdfError)
     320           0 :          CALL io_write_real3(bUWeightsSetID,(/1,1,1/),dimsInt(:3), REAL(results%unfolding_weights(:neigd,:,:)))
     321           0 :          CALL h5dclose_f(bUWeightsSetID, hdfError)
     322             : 
     323           0 :          CALL h5gclose_f(bandUnfoldingGroupID, hdfError)
     324             :       END IF
     325             : 
     326           7 :    END SUBROUTINE
     327             : 
     328           1 :    SUBROUTINE io_write_string1(datasetID,dims,stringLength,dataArray)
     329             : 
     330             :       USE hdf5
     331             :       USE m_hdf_tools4
     332             : 
     333             :       IMPLICIT NONE
     334             : 
     335             :       INTEGER(HID_T),              INTENT(IN) :: datasetID
     336             :       INTEGER,                     INTENT(IN) :: dims(1)
     337             :       INTEGER,                     INTENT(IN) :: stringLength
     338             :       CHARACTER(LEN=stringLength), INTENT(IN) :: dataArray(:)
     339             : 
     340             :       INTEGER          :: hdfError
     341             :       INTEGER(HID_T)   :: dataspaceID, memSpaceID
     342             :       INTEGER(HID_T)   :: stringTypeID
     343             :       INTEGER(HID_t)   :: trans
     344             :       INTEGER(HSIZE_t) :: memOffset(1), fncount(1)
     345             :       INTEGER(HSIZE_t) :: dimsHDF(1)
     346             :       INTEGER(SIZE_T)  :: stringLengthHDF
     347             : 
     348           1 :       stringLengthHDF = stringLength
     349           2 :       dimsHDF(:) = dims(:)
     350           1 :       memOffset(:) = 0
     351           2 :       fnCount(:) = dims(:)
     352             : 
     353           1 :       trans = gettransprop()
     354             : 
     355           1 :       CALL h5tcopy_f(H5T_NATIVE_CHARACTER, stringTypeID, hdfError)
     356           1 :       CALL h5tset_size_f(stringTypeID, stringLengthHDF, hdfError)
     357           1 :       CALL h5tset_strpad_f(stringTypeID, H5T_STR_SPACEPAD_F, hdfError)
     358           1 :       CALL h5tset_cset_f(stringTypeID, H5T_CSET_ASCII_F, hdfError)
     359             : 
     360           1 :       CALL h5dget_space_f(datasetID,dataspaceID,hdfError)
     361           1 :       CALL h5sselect_hyperslab_f(dataspaceID,H5S_SELECT_SET_F,memOffset,fncount,hdfError)
     362           1 :       CALL h5screate_simple_f(1,dimsHDF,memSpaceID,hdfError)
     363           1 :       CALL h5dwrite_f(datasetID,stringTypeID,dataArray,dimsHDF,hdfError,memSpaceID,dataspaceID,trans)
     364           1 :       CALL h5sclose_f(memSpaceID,hdfError)
     365           1 :       CALL h5sclose_f(dataspaceID,hdfError)
     366           1 :       CALL cleartransprop(trans)
     367             : 
     368           1 :       CALL h5tclose_f(stringTypeID,hdfError)
     369             : 
     370           1 :       CALL io_check("io_write_string1 !",hdfError)
     371             : 
     372           1 :    END SUBROUTINE io_write_string1
     373             : 
     374             : #endif
     375             : 
     376             : END MODULE m_banddos_io

Generated by: LCOV version 1.13