Ignore:
Timestamp:
Jul 29, 2020 7:23:03 AM (4 years ago)
Author:
raasch
Message:

extensions required for MPI-I/O of particle data to restart files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/posix_interface_mod.f90

    r4495 r4628  
    1919! Current revisions:
    2020! -----------------
    21 ! 
    22 ! 
     21!
     22!
    2323! Former revisions:
    2424! -----------------
    2525! $Id$
     26! extensions required for MPI-I/O of particle data to restart files
     27!
     28! 4495 2020-04-13 20:11:20Z raasch
    2629! Initial version (K. Ketelsen)
    2730!
     
    126129       MODULE PROCEDURE posix_read_int_1d
    127130       MODULE PROCEDURE posix_read_int_2d
     131       MODULE PROCEDURE posix_read_i4_3d
     132       MODULE PROCEDURE posix_read_i8_3d
    128133       MODULE PROCEDURE posix_read_offset_1d
    129134       MODULE PROCEDURE posix_read_real_1d
     
    137142       MODULE PROCEDURE posix_write_int_1d
    138143       MODULE PROCEDURE posix_write_int_2d
     144       MODULE PROCEDURE posix_write_i4_3d
     145       MODULE PROCEDURE posix_write_i8_3d
    139146       MODULE PROCEDURE posix_write_offset_1d
    140147       MODULE PROCEDURE posix_write_real_1d
     
    232239
    233240
    234  SUBROUTINE posix_read_int_2d (fid, data, nw)
     241 SUBROUTINE posix_read_int_2d( fid, data, nw )
    235242
    236243    IMPLICIT NONE
     
    250257
    251258 END SUBROUTINE posix_read_int_2d
     259
     260
     261
     262 SUBROUTINE posix_read_i4_3d( fid, data, nw )
     263
     264    IMPLICIT NONE
     265
     266    INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) ::  data         !<
     267    INTEGER, INTENT(IN)                                     ::  fid          !<
     268    INTEGER                                                 ::  nr_byte      !<
     269    INTEGER, INTENT(IN)                                     ::  nw           !<
     270
     271    TYPE(C_PTR)                                             ::  buf          !<
     272
     273
     274    nr_byte = nw * isp
     275    buf     = C_LOC( data )
     276
     277    CALL posix_read( fid, buf, nr_byte )
     278
     279 END SUBROUTINE posix_read_i4_3d
     280
     281
     282
     283 SUBROUTINE posix_read_i8_3d( fid, data, nw )
     284
     285    IMPLICIT NONE
     286
     287    INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) ::  data         !<
     288    INTEGER, INTENT(IN)                                     ::  fid          !<
     289    INTEGER                                                 ::  nr_byte      !<
     290    INTEGER, INTENT(IN)                                     ::  nw           !<
     291
     292    TYPE(C_PTR)                                             ::  buf          !<
     293
     294
     295    nr_byte = nw * idp
     296    buf     = C_LOC( data )
     297
     298    CALL posix_read( fid, buf, nr_byte )
     299
     300 END SUBROUTINE posix_read_i8_3d
    252301
    253302
     
    448497
    449498
     499 SUBROUTINE posix_write_i4_3d( fid, data, nw )
     500
     501    IMPLICIT NONE
     502
     503    INTEGER, INTENT(IN)                                     ::  fid        !<
     504    INTEGER                                                 ::  nr_byte    !<
     505    INTEGER, INTENT(IN)                                     ::  nw         !<
     506
     507    INTEGER(KIND=isp), INTENT(IN), TARGET, DIMENSION(:,:,:) ::  data       !<
     508
     509    TYPE(C_PTR)                                             ::  buf        !<
     510
     511
     512    nr_byte = nw * isp
     513    buf     = C_LOC( data )
     514
     515    CALL posix_write( fid, buf, nr_byte )
     516
     517 END SUBROUTINE posix_write_i4_3d
     518
     519
     520
     521 SUBROUTINE posix_write_i8_3d( fid, data, nw )
     522
     523    IMPLICIT NONE
     524
     525    INTEGER, INTENT(IN)                                     ::  fid        !<
     526    INTEGER                                                 ::  nr_byte    !<
     527    INTEGER, INTENT(IN)                                     ::  nw         !<
     528
     529    INTEGER(KIND=idp), INTENT(IN), TARGET, DIMENSION(:,:,:) ::  data       !<
     530
     531    TYPE(C_PTR)                                             ::  buf        !<
     532
     533
     534    nr_byte = nw * idp
     535    buf     = C_LOC( data )
     536
     537    CALL posix_write( fid, buf, nr_byte )
     538
     539 END SUBROUTINE posix_write_i8_3d
     540
     541
     542
    450543 SUBROUTINE posix_write_offset_1d( fid, data, nw )
    451544
Note: See TracChangeset for help on using the changeset viewer.