Ignore:
Timestamp:
Mar 15, 2018 9:17:58 AM (3 years ago)
Author:
Giersch
Message:

Reading/Writing? data in case of restart runs revised

File:
1 edited

Legend:

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

    r2776 r2894  
    2525! -----------------
    2626! $Id$
     27! variable named found has been introduced for checking if restart data was
     28! found, reading of restart strings has been moved completely to
     29! read_restart_data_mod, virtual_flight_prerun flag has been removed, redundant
     30! skipping function has been removed, flight_read/write_restart_data
     31! have been renamed to flight_r/wrd_global, flight_rrd_global is called in
     32! read_restart_data_mod now, marker *** end flight *** was removed, strings and
     33! their respective lengths are written out and read now in case of restart runs
     34! to get rid of prescribed character lengths, CASE DEFAULT was added if restart
     35! data is read
     36!
     37! 2872 2018-03-12 10:05:47Z Giersch
    2738! virutal_flight_prerun flag is used to define if module
    2839! related parameters were outputted as restart data
     
    6677 
    6778    USE control_parameters,                                                    &
    68         ONLY:  fl_max, num_leg, num_var_fl, num_var_fl_user, virtual_flight,   &
    69                virtual_flight_prerun
     79        ONLY:  fl_max, num_leg, num_var_fl, num_var_fl_user, virtual_flight
    7080 
    7181    USE kinds
     
    134144       MODULE PROCEDURE flight_measurement
    135145    END INTERFACE flight_measurement
    136 
    137     INTERFACE flight_skip_var_list
    138        MODULE PROCEDURE flight_skip_var_list
    139     END INTERFACE flight_skip_var_list
    140    
    141     INTERFACE flight_read_restart_data
    142        MODULE PROCEDURE flight_read_restart_data
    143     END INTERFACE flight_read_restart_data
    144    
    145     INTERFACE flight_write_restart_data
    146        MODULE PROCEDURE flight_write_restart_data
    147     END INTERFACE flight_write_restart_data
     146   
     147    INTERFACE flight_rrd_global
     148       MODULE PROCEDURE flight_rrd_global
     149    END INTERFACE flight_rrd_global
     150   
     151    INTERFACE flight_wrd_global
     152       MODULE PROCEDURE flight_wrd_global
     153    END INTERFACE flight_wrd_global
    148154
    149155!
     
    153159!-- Public interfaces
    154160    PUBLIC flight_init, flight_header, flight_parin, flight_measurement,       &
    155            flight_write_restart_data, flight_skip_var_list                    
     161           flight_wrd_global, flight_rrd_global                   
    156162!
    157163!-- Public variables
     
    238244       virtual_flight = .TRUE.
    239245
    240        IF ( TRIM( initializing_actions ) == 'read_restart_data' ) THEN
    241           CALL flight_read_restart_data
    242        ENDIF
    243246
    244247 10    CONTINUE
     
    879882
    880883    END SUBROUTINE flight_check_parameters
    881 
    882 !------------------------------------------------------------------------------!
    883 ! Description:
    884 ! ------------
    885 !> Skipping the flight-module variables from restart-file (binary format).
    886 !------------------------------------------------------------------------------!
    887    SUBROUTINE flight_skip_var_list
    888884       
    889       IMPLICIT NONE
    890            
    891       CHARACTER (LEN=1)  ::  cdum
    892       CHARACTER (LEN=30) ::  variable_chr
    893            
    894       READ ( 13 )  variable_chr
    895 
    896       DO  WHILE ( TRIM( variable_chr ) /= '*** end flight ***' )
    897 
    898          READ ( 13 )  cdum
    899          READ ( 13 )  variable_chr
    900 
    901       ENDDO   
    902            
    903    END SUBROUTINE flight_skip_var_list
    904        
    905    
     885
    906886!------------------------------------------------------------------------------!
    907887! Description:
     
    909889!> This routine reads the respective restart data.
    910890!------------------------------------------------------------------------------!
    911     SUBROUTINE flight_read_restart_data 
     891    SUBROUTINE flight_rrd_global( found ) 
     892
     893
     894       USE control_parameters,                                                 &
     895           ONLY: length, restart_string
    912896
    913897   
    914898       IMPLICIT NONE
    915899       
    916        CHARACTER (LEN=30) ::  variable_chr !< dummy variable to read string
    917        
    918        
    919        READ ( 13 )  variable_chr
    920        DO  WHILE ( TRIM( variable_chr ) /= '*** end flight ***' )
    921 
    922           SELECT CASE ( TRIM( variable_chr ) )
     900       LOGICAL, INTENT(OUT)  ::  found
     901
     902
     903       found = .TRUE.
     904
     905
     906       SELECT CASE ( restart_string(1:length) )
    923907         
    924              CASE ( 'u_agl' )
    925                 IF ( .NOT. ALLOCATED( u_agl ) )  ALLOCATE( u_agl(1:num_leg) )
    926                 READ ( 13 )  u_agl   
    927              CASE ( 'v_agl' )
    928                 IF ( .NOT. ALLOCATED( v_agl ) )  ALLOCATE( v_agl(1:num_leg) )
    929                 READ ( 13 )  v_agl
    930              CASE ( 'w_agl' )
    931                 IF ( .NOT. ALLOCATED( w_agl ) )  ALLOCATE( w_agl(1:num_leg) )
    932                 READ ( 13 )  w_agl
    933              CASE ( 'x_pos' )
    934                 IF ( .NOT. ALLOCATED( x_pos ) )  ALLOCATE( x_pos(1:num_leg) )
    935                 READ ( 13 )  x_pos
    936              CASE ( 'y_pos' )
    937                 IF ( .NOT. ALLOCATED( y_pos ) )  ALLOCATE( y_pos(1:num_leg) )
    938                 READ ( 13 )  y_pos
    939              CASE ( 'z_pos' )
    940                 IF ( .NOT. ALLOCATED( z_pos ) )  ALLOCATE( z_pos(1:num_leg) )
    941                 READ ( 13 )  z_pos
    942              CASE ( 'virtual_flight_prerun' )
    943                 READ ( 13 )  virtual_flight_prerun
     908          CASE ( 'u_agl' )
     909             IF ( .NOT. ALLOCATED( u_agl ) )  ALLOCATE( u_agl(1:num_leg) )
     910             READ ( 13 )  u_agl   
     911          CASE ( 'v_agl' )
     912             IF ( .NOT. ALLOCATED( v_agl ) )  ALLOCATE( v_agl(1:num_leg) )
     913             READ ( 13 )  v_agl
     914          CASE ( 'w_agl' )
     915             IF ( .NOT. ALLOCATED( w_agl ) )  ALLOCATE( w_agl(1:num_leg) )
     916             READ ( 13 )  w_agl
     917          CASE ( 'x_pos' )
     918             IF ( .NOT. ALLOCATED( x_pos ) )  ALLOCATE( x_pos(1:num_leg) )
     919             READ ( 13 )  x_pos
     920          CASE ( 'y_pos' )
     921             IF ( .NOT. ALLOCATED( y_pos ) )  ALLOCATE( y_pos(1:num_leg) )
     922             READ ( 13 )  y_pos
     923          CASE ( 'z_pos' )
     924             IF ( .NOT. ALLOCATED( z_pos ) )  ALLOCATE( z_pos(1:num_leg) )
     925             READ ( 13 )  z_pos
     926
     927          CASE DEFAULT
     928
     929             found = .FALSE.
    944930         
    945           END SELECT
    946          
    947           READ ( 13 )  variable_chr
    948          
    949        ENDDO
    950 
    951     END SUBROUTINE flight_read_restart_data 
     931       END SELECT
     932
     933
     934    END SUBROUTINE flight_rrd_global 
    952935   
    953936!------------------------------------------------------------------------------!
     
    956939!> This routine writes the respective restart data.
    957940!------------------------------------------------------------------------------!
    958     SUBROUTINE flight_write_restart_data 
     941    SUBROUTINE flight_wrd_global 
     942
    959943
    960944       IMPLICIT NONE
    961945
    962        virtual_flight_prerun = .TRUE.
    963        
    964        WRITE ( 14 )  'u_agl                         '
    965        WRITE ( 14 )  u_agl       
    966        WRITE ( 14 )  'v_agl                         '
     946 
     947       CALL wrd_write_string( 'u_agl' )
     948       WRITE ( 14 )  u_agl
     949
     950       CALL wrd_write_string( 'v_agl' )
    967951       WRITE ( 14 )  v_agl
    968        WRITE ( 14 )  'w_agl                         '
     952
     953       CALL wrd_write_string( 'w_agl' )
    969954       WRITE ( 14 )  w_agl
    970        WRITE ( 14 )  'x_pos                         '
     955
     956       CALL wrd_write_string( 'x_pos' )
    971957       WRITE ( 14 )  x_pos
    972        WRITE ( 14 )  'y_pos                         '
     958
     959       CALL wrd_write_string( 'y_pos' )
    973960       WRITE ( 14 )  y_pos
    974        WRITE ( 14 )  'z_pos                         '
     961
     962       CALL wrd_write_string( 'z_pos' )
    975963       WRITE ( 14 )  z_pos
    976        WRITE ( 14 )  'virtual_flight_prerun         '
    977        WRITE ( 14 )  virtual_flight_prerun
    978        
    979        WRITE ( 14 )  '*** end flight ***            '
    980        
    981     END SUBROUTINE flight_write_restart_data   
     964
     965       
     966    END SUBROUTINE flight_wrd_global   
    982967   
    983968
Note: See TracChangeset for help on using the changeset viewer.