Ignore:
Timestamp:
Apr 13, 2020 8:11:20 PM (5 years ago)
Author:
raasch
Message:

restart data handling with MPI-IO added, first part

File:
1 edited

Legend:

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

    r4493 r4495  
    2828! -----------------
    2929! $Id$
     30! restart data handling with MPI-IO added
     31!
     32! 4493 2020-04-10 09:49:43Z pavelkrc
    3033! Avoid unstable direct normal radiation near horizon
    3134!
     
    278281               message_string, plant_canopy, pt_surface,                       &
    279282               rho_surface, simulated_time, spinup_time, surface_pressure,     &
    280                read_svf, write_svf,                                            &
     283               read_svf, restart_data_format_output, write_svf,                &
    281284               time_since_reference_point, urban_surface, varnamelength
    282285
     
    360363        ONLY:  rrtmg_sw
    361364#endif
     365    USE restart_data_mpi_io_mod,                                                                   &
     366        ONLY:  wrd_mpi_io
     367
    362368    USE statistics,                                                            &
    363369        ONLY:  hom
     
    1193411940
    1193511941
    11936     IF ( ALLOCATED( rad_net_av ) )  THEN
    11937        CALL wrd_write_string( 'rad_net_av' )
    11938        WRITE ( 14 )  rad_net_av
     11942    IF ( TRIM( restart_data_format_output ) == 'fortran_binary' )  THEN
     11943
     11944       IF ( ALLOCATED( rad_net_av ) )  THEN
     11945          CALL wrd_write_string( 'rad_net_av' )
     11946          WRITE ( 14 )  rad_net_av
     11947       ENDIF
     11948
     11949       IF ( ALLOCATED( rad_lw_in_xy_av ) )  THEN
     11950          CALL wrd_write_string( 'rad_lw_in_xy_av' )
     11951          WRITE ( 14 )  rad_lw_in_xy_av
     11952       ENDIF
     11953
     11954       IF ( ALLOCATED( rad_lw_out_xy_av ) )  THEN
     11955          CALL wrd_write_string( 'rad_lw_out_xy_av' )
     11956          WRITE ( 14 )  rad_lw_out_xy_av
     11957       ENDIF
     11958
     11959       IF ( ALLOCATED( rad_sw_in_xy_av ) )  THEN
     11960          CALL wrd_write_string( 'rad_sw_in_xy_av' )
     11961          WRITE ( 14 )  rad_sw_in_xy_av
     11962       ENDIF
     11963
     11964       IF ( ALLOCATED( rad_sw_out_xy_av ) )  THEN
     11965          CALL wrd_write_string( 'rad_sw_out_xy_av' )
     11966          WRITE ( 14 )  rad_sw_out_xy_av
     11967       ENDIF
     11968
     11969       IF ( ALLOCATED( rad_lw_in ) )  THEN
     11970          CALL wrd_write_string( 'rad_lw_in' )
     11971          WRITE ( 14 )  rad_lw_in
     11972       ENDIF
     11973
     11974       IF ( ALLOCATED( rad_lw_in_av ) )  THEN
     11975          CALL wrd_write_string( 'rad_lw_in_av' )
     11976          WRITE ( 14 )  rad_lw_in_av
     11977       ENDIF
     11978
     11979       IF ( ALLOCATED( rad_lw_out ) )  THEN
     11980          CALL wrd_write_string( 'rad_lw_out' )
     11981          WRITE ( 14 )  rad_lw_out
     11982       ENDIF
     11983
     11984       IF ( ALLOCATED( rad_lw_out_av) )  THEN
     11985          CALL wrd_write_string( 'rad_lw_out_av' )
     11986          WRITE ( 14 )  rad_lw_out_av
     11987       ENDIF
     11988
     11989       IF ( ALLOCATED( rad_lw_cs_hr) )  THEN
     11990          CALL wrd_write_string( 'rad_lw_cs_hr' )
     11991          WRITE ( 14 )  rad_lw_cs_hr
     11992       ENDIF
     11993
     11994       IF ( ALLOCATED( rad_lw_cs_hr_av) )  THEN
     11995          CALL wrd_write_string( 'rad_lw_cs_hr_av' )
     11996          WRITE ( 14 )  rad_lw_cs_hr_av
     11997       ENDIF
     11998
     11999       IF ( ALLOCATED( rad_lw_hr) )  THEN
     12000          CALL wrd_write_string( 'rad_lw_hr' )
     12001          WRITE ( 14 )  rad_lw_hr
     12002       ENDIF
     12003
     12004       IF ( ALLOCATED( rad_lw_hr_av) )  THEN
     12005          CALL wrd_write_string( 'rad_lw_hr_av' )
     12006          WRITE ( 14 )  rad_lw_hr_av
     12007       ENDIF
     12008
     12009       IF ( ALLOCATED( rad_sw_in) )  THEN
     12010          CALL wrd_write_string( 'rad_sw_in' )
     12011          WRITE ( 14 )  rad_sw_in
     12012       ENDIF
     12013
     12014       IF ( ALLOCATED( rad_sw_in_av) )  THEN
     12015          CALL wrd_write_string( 'rad_sw_in_av' )
     12016          WRITE ( 14 )  rad_sw_in_av
     12017       ENDIF
     12018
     12019       IF ( ALLOCATED( rad_sw_out) )  THEN
     12020          CALL wrd_write_string( 'rad_sw_out' )
     12021          WRITE ( 14 )  rad_sw_out
     12022       ENDIF
     12023
     12024       IF ( ALLOCATED( rad_sw_out_av) )  THEN
     12025          CALL wrd_write_string( 'rad_sw_out_av' )
     12026          WRITE ( 14 )  rad_sw_out_av
     12027       ENDIF
     12028
     12029       IF ( ALLOCATED( rad_sw_cs_hr) )  THEN
     12030          CALL wrd_write_string( 'rad_sw_cs_hr' )
     12031          WRITE ( 14 )  rad_sw_cs_hr
     12032       ENDIF
     12033
     12034       IF ( ALLOCATED( rad_sw_cs_hr_av) )  THEN
     12035          CALL wrd_write_string( 'rad_sw_cs_hr_av' )
     12036          WRITE ( 14 )  rad_sw_cs_hr_av
     12037       ENDIF
     12038
     12039       IF ( ALLOCATED( rad_sw_hr) )  THEN
     12040          CALL wrd_write_string( 'rad_sw_hr' )
     12041          WRITE ( 14 )  rad_sw_hr
     12042       ENDIF
     12043
     12044       IF ( ALLOCATED( rad_sw_hr_av) )  THEN
     12045          CALL wrd_write_string( 'rad_sw_hr_av' )
     12046          WRITE ( 14 )  rad_sw_hr_av
     12047       ENDIF
     12048
     12049    ELSEIF ( TRIM( restart_data_format_output ) == 'mpi' )  THEN
     12050
     12051       IF ( ALLOCATED( rad_net_av ) )  CALL wrd_mpi_io( 'rad_net_av', rad_net_av )
     12052       IF ( ALLOCATED( rad_lw_in_xy_av ) )  CALL wrd_mpi_io( 'rad_lw_in_xy_av', rad_lw_in_xy_av )
     12053       IF ( ALLOCATED( rad_lw_out_xy_av ) )  CALL wrd_mpi_io( 'rad_lw_out_xy_av', rad_lw_out_xy_av )
     12054       IF ( ALLOCATED( rad_sw_in_xy_av ) )  CALL wrd_mpi_io( 'rad_sw_in_xy_av', rad_sw_in_xy_av )
     12055       IF ( ALLOCATED( rad_sw_out_xy_av ) )  CALL wrd_mpi_io( 'rad_sw_out_xy_av', rad_sw_out_xy_av )
     12056       IF ( ALLOCATED( rad_lw_in ) )  CALL wrd_mpi_io( 'rad_lw_in', rad_lw_in )
     12057       IF ( ALLOCATED( rad_lw_in_av ) )  CALL wrd_mpi_io( 'rad_lw_in_av', rad_lw_in_av )
     12058       IF ( ALLOCATED( rad_lw_out ) )  CALL wrd_mpi_io( 'rad_lw_out', rad_lw_out )
     12059       IF ( ALLOCATED( rad_lw_out_av) )  CALL wrd_mpi_io( 'rad_lw_out_av', rad_lw_out_av )
     12060       IF ( ALLOCATED( rad_lw_cs_hr) )  CALL wrd_mpi_io( 'rad_lw_cs_hr', rad_lw_cs_hr )
     12061       IF ( ALLOCATED( rad_lw_cs_hr_av) )  CALL wrd_mpi_io( 'rad_lw_cs_hr_av', rad_lw_cs_hr_av )
     12062       IF ( ALLOCATED( rad_lw_hr) )  CALL wrd_mpi_io( 'rad_lw_hr', rad_lw_hr )
     12063       IF ( ALLOCATED( rad_lw_hr_av) )  CALL wrd_mpi_io( 'rad_lw_hr_av', rad_lw_hr_av )
     12064       IF ( ALLOCATED( rad_sw_in) )  CALL wrd_mpi_io( 'rad_sw_in', rad_sw_in )
     12065       IF ( ALLOCATED( rad_sw_in_av) )  CALL wrd_mpi_io( 'rad_sw_in_av', rad_sw_in_av )
     12066       IF ( ALLOCATED( rad_sw_out) )  CALL wrd_mpi_io( 'rad_sw_out', rad_sw_out )
     12067       IF ( ALLOCATED( rad_sw_out_av) )  CALL wrd_mpi_io( 'rad_sw_out_av', rad_sw_out_av )
     12068       IF ( ALLOCATED( rad_sw_cs_hr) )  CALL wrd_mpi_io( 'rad_sw_cs_hr', rad_sw_cs_hr )
     12069       IF ( ALLOCATED( rad_sw_cs_hr_av) )  CALL wrd_mpi_io( 'rad_sw_cs_hr_av', rad_sw_cs_hr_av )
     12070       IF ( ALLOCATED( rad_sw_hr) )  CALL wrd_mpi_io( 'rad_sw_hr', rad_sw_hr )
     12071       IF ( ALLOCATED( rad_sw_hr_av) )  CALL wrd_mpi_io( 'rad_sw_hr_av', rad_sw_hr_av )
     12072
    1193912073    ENDIF
    1194012074
    11941     IF ( ALLOCATED( rad_lw_in_xy_av ) )  THEN
    11942        CALL wrd_write_string( 'rad_lw_in_xy_av' )
    11943        WRITE ( 14 )  rad_lw_in_xy_av
    11944     ENDIF
    11945 
    11946     IF ( ALLOCATED( rad_lw_out_xy_av ) )  THEN
    11947        CALL wrd_write_string( 'rad_lw_out_xy_av' )
    11948        WRITE ( 14 )  rad_lw_out_xy_av
    11949     ENDIF
    11950 
    11951     IF ( ALLOCATED( rad_sw_in_xy_av ) )  THEN
    11952        CALL wrd_write_string( 'rad_sw_in_xy_av' )
    11953        WRITE ( 14 )  rad_sw_in_xy_av
    11954     ENDIF
    11955 
    11956     IF ( ALLOCATED( rad_sw_out_xy_av ) )  THEN
    11957        CALL wrd_write_string( 'rad_sw_out_xy_av' )
    11958        WRITE ( 14 )  rad_sw_out_xy_av
    11959     ENDIF
    11960 
    11961     IF ( ALLOCATED( rad_lw_in ) )  THEN
    11962        CALL wrd_write_string( 'rad_lw_in' )
    11963        WRITE ( 14 )  rad_lw_in
    11964     ENDIF
    11965 
    11966     IF ( ALLOCATED( rad_lw_in_av ) )  THEN
    11967        CALL wrd_write_string( 'rad_lw_in_av' )
    11968        WRITE ( 14 )  rad_lw_in_av
    11969     ENDIF
    11970 
    11971     IF ( ALLOCATED( rad_lw_out ) )  THEN
    11972        CALL wrd_write_string( 'rad_lw_out' )
    11973        WRITE ( 14 )  rad_lw_out
    11974     ENDIF
    11975 
    11976     IF ( ALLOCATED( rad_lw_out_av) )  THEN
    11977        CALL wrd_write_string( 'rad_lw_out_av' )
    11978        WRITE ( 14 )  rad_lw_out_av
    11979     ENDIF
    11980 
    11981     IF ( ALLOCATED( rad_lw_cs_hr) )  THEN
    11982        CALL wrd_write_string( 'rad_lw_cs_hr' )
    11983        WRITE ( 14 )  rad_lw_cs_hr
    11984     ENDIF
    11985 
    11986     IF ( ALLOCATED( rad_lw_cs_hr_av) )  THEN
    11987        CALL wrd_write_string( 'rad_lw_cs_hr_av' )
    11988        WRITE ( 14 )  rad_lw_cs_hr_av
    11989     ENDIF
    11990 
    11991     IF ( ALLOCATED( rad_lw_hr) )  THEN
    11992        CALL wrd_write_string( 'rad_lw_hr' )
    11993        WRITE ( 14 )  rad_lw_hr
    11994     ENDIF
    11995 
    11996     IF ( ALLOCATED( rad_lw_hr_av) )  THEN
    11997        CALL wrd_write_string( 'rad_lw_hr_av' )
    11998        WRITE ( 14 )  rad_lw_hr_av
    11999     ENDIF
    12000 
    12001     IF ( ALLOCATED( rad_sw_in) )  THEN
    12002        CALL wrd_write_string( 'rad_sw_in' )
    12003        WRITE ( 14 )  rad_sw_in
    12004     ENDIF
    12005 
    12006     IF ( ALLOCATED( rad_sw_in_av) )  THEN
    12007        CALL wrd_write_string( 'rad_sw_in_av' )
    12008        WRITE ( 14 )  rad_sw_in_av
    12009     ENDIF
    12010 
    12011     IF ( ALLOCATED( rad_sw_out) )  THEN
    12012        CALL wrd_write_string( 'rad_sw_out' )
    12013        WRITE ( 14 )  rad_sw_out
    12014     ENDIF
    12015 
    12016     IF ( ALLOCATED( rad_sw_out_av) )  THEN
    12017        CALL wrd_write_string( 'rad_sw_out_av' )
    12018        WRITE ( 14 )  rad_sw_out_av
    12019     ENDIF
    12020 
    12021     IF ( ALLOCATED( rad_sw_cs_hr) )  THEN
    12022        CALL wrd_write_string( 'rad_sw_cs_hr' )
    12023        WRITE ( 14 )  rad_sw_cs_hr
    12024     ENDIF
    12025 
    12026     IF ( ALLOCATED( rad_sw_cs_hr_av) )  THEN
    12027        CALL wrd_write_string( 'rad_sw_cs_hr_av' )
    12028        WRITE ( 14 )  rad_sw_cs_hr_av
    12029     ENDIF
    12030 
    12031     IF ( ALLOCATED( rad_sw_hr) )  THEN
    12032        CALL wrd_write_string( 'rad_sw_hr' )
    12033        WRITE ( 14 )  rad_sw_hr
    12034     ENDIF
    12035 
    12036     IF ( ALLOCATED( rad_sw_hr_av) )  THEN
    12037        CALL wrd_write_string( 'rad_sw_hr_av' )
    12038        WRITE ( 14 )  rad_sw_hr_av
    12039     ENDIF
    12040 
    12041 
    1204212075 END SUBROUTINE radiation_wrd_local
     12076
     12077
    1204312078
    1204412079!------------------------------------------------------------------------------!
Note: See TracChangeset for help on using the changeset viewer.