39   use gtool_history, only: gt_history_axis, gt_history_varinfo, gt_history
    49   use netcdf
, only: nf90_max_dims
    92   character(*), 
parameter, 
public:: 
wgtsuf = 
'_weight'   156     real(DP), 
pointer:: a_axis(:) =>null()
   162   type(gt_history_axis), 
save, 
target, 
public:: 
gthst_axes(1:nf90_max_dims)
   179     type(gt_history), 
pointer:: gthist =>null()
   248     integer, 
pointer:: st(:) =>null()
   251     integer, 
pointer:: ed(:) =>null()
   254     integer, 
pointer:: sd(:) =>null()
   269                         real(DP), 
pointer:: wgt1(:) =>null()
   271     real(DP), 
pointer:: wgt2(:) =>null()
   273     real(DP), 
pointer:: wgt3(:) =>null()
   275     real(DP), 
pointer:: wgt4(:) =>null()
   277     real(DP), 
pointer:: wgt5(:) =>null()
   279     real(DP), 
pointer:: wgt6(:) =>null()
   281     real(DP), 
pointer:: wgt7(:) =>null()
   295     logical, 
pointer:: avr(:) =>null()
   335   character(*), 
parameter, 
public:: 
sub_sname = 
"HistAuto"   339     & 
'$Id: gtool_historyauto_internal.rb2f90,v 1.6 2010-07-04 22:01:51 morikawa Exp $'   447     use dc_date, only: 
operator(==), 
operator(>), 
operator(<), &
   451     real(DP), 
intent(in):: time
   453     integer, 
intent(out):: stime_index
   456     integer:: stat, i, startnum, endnum
   457     character(STRING):: cause_c
   458     character(*), 
parameter:: subname = 
"HstVarsOutputCheck"   483     end do timestepsearch
   492       call dbgmessage( 
'saved_tstep=<%d> is already checked.', &
   538     call dbgmessage( 
'numvar=<%d:%d> in saved_tstep=<%d> will be checked from now.', &
   556     do i = startnum, endnum
   616     call storeerror(stat, subname, cause_c = cause_c)
   621     & gthist,  & ! (inout)
   635     use dc_date, only: dcdifftimecreate, evalbyunit
   641       & historycreate, historyaddvariable, historyaddattr, &
   642       & historyinitialized, historyput, historyputaxismpi, &
   643       & historyaxiscreate, historyaxisinquire, historyaxiscopy, &
   644       & historyvarinfoinquire, historyvarinfocreate, &
   645       & historyvarinfocopy, historyvarinfoinitialized, &
   646       & historyvarinfoclear
   649     type(gt_history), 
intent(inout):: gthist
   652     character(*), 
intent(in):: varname
   655     real(DP), 
intent(in):: time
   658     character(TOKEN):: interval_unit
   661     real(DP):: origin_value
   664     character(TOKEN):: origin_unit
   668     real(DP):: origin_sec
   669     integer:: newfile_intvalue
   670     real(DP):: newfile_intvalued
   673     character(TOKEN):: newfile_intunit
   677     character(STRING):: file, file_base, file_suffix, file_newfile_time, file_rank
   680     integer:: stat, i, j, k, vnum, numdims_slice, dim_size, cnt
   681     character(STRING):: name, units, longname, cause_c, wgt_name
   682     character(TOKEN):: xtype
   683     type(gt_history_axis):: gthst_axes_time
   684     type(gt_history_axis), 
pointer:: gthst_axes_slices(:) =>null()
   687     real(DP):: wgt_sum, wgt_sum_s
   688     logical:: slice_valid
   689     integer:: slice_start(1:
numdims-1)
   692     integer:: slice_end(1:
numdims-1)
   695     integer:: slice_stride(1:
numdims-1)
   699     character(*), 
parameter:: subname = 
"HstFileCreate"   701     call beginsub(subname, 
'varname=%c', c1 = trim(varname) )
   710       call historyvarinfoinquire( &
   713       if ( trim(varname) == trim(name) ) vnum = i
   716     if ( vnum == 0 ) 
then   736       & interval_unit  = interval_unit )       
   738     call historyaxiscopy( &
   741       & units = trim(interval_unit) // 
' ' // &
   750       & slice_start = slice_start, &   
   751       & slice_end = slice_end, &       
   752       & slice_stride = slice_stride )  
   757     if ( .not. historyinitialized( gthist ) ) 
then   759       if (       all( slice_start  == (/ ( 1, i = 1, 
numdims -1 ) /) ) &
   760         &  .and. all( slice_end    <  (/ ( 1, i = 1, 
numdims -1 ) /) ) &
   761         &  .and. all( slice_stride == (/ ( 1, i = 1, 
numdims -1 ) /) )  ) 
then   763         allocate( gthst_axes_slices(1:
numdims) )
   769         slice_valid = .false.
   772         allocate( gthst_axes_slices(1:
numdims) )
   773         allocate( data_axes_slices(1:
numdims) )
   774         allocate( data_weights_slices(1:
numdims) )
   781           if ( slice_start(i) < 1 ) 
then   783             cause_c = 
cprintf(
'slice_start=%d', &
   784               &         i = (/ slice_start(i) /) )
   788           if ( slice_stride(i) < 1 ) 
then   790             cause_c = 
cprintf(
'slice_stride=%d', &
   791               &         i = (/ slice_stride(i) /) )
   798           if (       ( slice_start(i)  == 1 ) &
   799             &  .and. ( slice_end(i)    <  1 ) &
   800             &  .and. ( slice_stride(i) == 1 )  ) 
then   802             call historyaxiscopy( &
   803               & axis_dest = gthst_axes_slices(i) , &  
   814           call historyaxisinquire( &
   818             & longname = longname, &   
   823           if ( slice_end(i) < 1 ) slice_end(i) = dim_size
   824           if ( slice_end(i) > dim_size ) 
then   826               & 
'slice options to (%c) are undesirable ' // &
   827               & 
'(@slice_end=%d). @slice_end is corrected forcibly to (%d) ', &
   829               & i = (/ slice_end(i), dim_size /) )
   831             slice_end(i) = dim_size
   835           if ( slice_start(i) > slice_end(i) ) 
then   837             cause_c = 
cprintf(
'slice_start=%d, slice_end=%d', &
   838               &         i = (/ slice_start(i), slice_end(i) /) )
   842           numdims_slice = int( ( slice_end(i) - slice_start(i) + 1 ) / slice_stride(i) )
   845           if ( numdims_slice < 1 ) 
then   847               & 
'slice options to (%c) are invalid. ' // &
   848               & 
'(@slice_start=%d @slice_end=%d @slice_stride=%d)', &
   850               & i = (/ slice_start(i), slice_end(i), slice_stride(i) /) )
   852             cause_c = 
cprintf(
'slice_start=%d, slice_end=%d, slice_stride=%d', &
   853               &         i = (/ slice_start(i), slice_end(i), slice_stride(i) /) )
   857           call historyaxiscreate( &
   858             & axis = gthst_axes_slices(i), &  
   860             & 
size = numdims_slice, &         
   861             & longname = longname, &          
   869           allocate( data_axes_slices(i) % a_axis( numdims_slice ) )
   871           do j = slice_start(i), slice_end(i), slice_stride(i)
   872             data_axes_slices(i) % a_axis( cnt ) = 
data_axes(i) % a_axis( j )
   880             call historyvarinfoinquire( &
   884             if ( trim(name) // 
wgtsuf == trim(wgt_name) ) 
then   891               allocate( data_weights_slices(j) % a_axis( numdims_slice ) )
   893               do k = slice_start(i), slice_end(i), slice_stride(i)
   894                 data_weights_slices(j) % a_axis( cnt ) = 
data_weights(j) % a_axis( k )
   898               wgt_sum_s = sum( data_weights_slices(j) % a_axis )
   899               data_weights_slices(j) % a_axis = data_weights_slices(j) % a_axis * ( wgt_sum / wgt_sum_s )
   911           if ( .not. 
associated( data_weights_slices(i) % a_axis ) ) 
then   912             allocate( data_weights_slices(i) % a_axis( 
size(
data_weights(i) % a_axis ) ) )
   913             data_weights_slices(i) % a_axis = 
data_weights(i) % a_axis
   920         gthst_axes_slices(
numdims) = gthst_axes_time
   932         & origin_value   = origin_value, &       
   933         & origin_unit    = origin_unit, &        
   934         & interval_unit  = interval_unit, &      
   935         & newfile_intvalue = newfile_intvalue, & 
   936         & newfile_intunit = newfile_intunit )    
   942         & dccalconvertbyunit( &
   943         &   
real( origin_value, DP ), origin_unit, 
'sec', cal_save )
   951       if ( newfile_intvalue < 1 ) 
then   953         origin_value = dccalconvertbyunit( &
   954           & origin_sec, 
'sec', interval_unit, cal_save )
   960           & dccalconvertbyunit( time, 
'sec', interval_unit, cal_save )
   968       if ( len_trim( file ) - index(file, 
'.nc', .true.) == 2 ) 
then   969         file_base = file(1:len_trim( file ) - 3)
   978         file_rank = 
'_rank' // trim( adjustl(
rank_save) )
   980       if ( newfile_intvalue > 0 ) 
then   981         newfile_intvalued = &
   982           & dccalconvertbyunit( time, 
'sec', newfile_intunit, cal_save )
   984         file_newfile_time = &
   985           & 
cprintf( 
'_time%08d', i = (/ int( newfile_intvalued ) /) )
   988         file_newfile_time = 
''   991       file = trim(file_base) // trim(file_rank) // trim(file_newfile_time) // trim(file_suffix)
   996       call historycreate( &
   997         & history = gthist, &                                     
  1000         & axes = gthst_axes_slices(1:
numdims), &                  
  1001         & origind = origin_value, &                               
  1011         call historyaxisinquire( &
  1012           & axis = gthst_axes_slices(i), &  
  1015           & history = gthist, &                    
  1017           & array = data_axes_slices(i) % a_axis ) 
  1025           call historyaxisinquire( &
  1026             & axis = gthst_axes_slices(i), &  
  1031               & 
'data of axis (%c) in whole area is lack. ' // &
  1032               & 
'Specify the data by "HistoryAutoPutAxisMPI" explicitly.', &
  1038           call historyputaxismpi( &
  1039             & history = gthist, &                   
  1048       if ( slice_valid ) 
then  1049         deallocate( gthst_axes_slices )
  1050         deallocate( data_axes_slices )
  1052         deallocate( gthst_axes_slices )
  1053         nullify( data_axes_slices )
  1060         call historyaddvariable( &
  1061           & history = gthist, &           
  1063         call historyvarinfoinquire( &
  1067           & history = gthist, &                       
  1069           & array = data_weights_slices(i) % a_axis ) 
  1072       if ( slice_valid ) 
then  1073         deallocate( data_weights_slices )
  1075         nullify( data_weights_slices )
  1085     call historyaddvariable( &
  1087       & history = gthist )             
  1090     call storeerror(stat, subname, cause_c = cause_c)
  1096     & array, space_average, &     ! (in)
  1109     real, 
intent(in), 
target:: array(:)
  1110     logical, 
intent(in):: space_average(1)
  1111                         real(DP), 
intent(in):: weight1(:)
  1113     real, 
pointer:: array_avr(:) 
  1115     real, 
pointer:: array_avr_work(:)
  1117                         real, 
pointer:: array_avr_work1(:)
  1120     integer:: array_shape(1)
  1121     integer:: i, dim_size
  1122     real(DP):: weight_sum
  1125     array_shape = shape( array )
  1126     array_avr_work => array
  1131     if ( space_average(1) ) 
then  1132       dim_size = array_shape(1)
  1134       allocate( array_avr_work1( array_shape(1) &
  1137       array_avr_work1 = 0.0
  1140         array_avr_work1(1) = array_avr_work1(1) + array_avr_work(i) * weight1(i)
  1141         weight_sum = weight_sum + weight1(i)
  1143       array_avr_work1 = array_avr_work1 / weight_sum
  1144       array_avr_work  => array_avr_work1
  1153       allocate( array_avr( array_shape(1) &
  1157       array_avr = array_avr_work
  1159       nullify( array_avr_work )
  1161                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  1168     & array, space_average, &     ! (in)
  1183     real, 
intent(in), 
target:: array(:,:)
  1184     logical, 
intent(in):: space_average(2)
  1185                         real(DP), 
intent(in):: weight1(:)
  1187     real(DP), 
intent(in):: weight2(:)
  1189     real, 
pointer:: array_avr(:,:) 
  1191     real, 
pointer:: array_avr_work(:,:)
  1193                         real, 
pointer:: array_avr_work1(:,:)
  1195     real, 
pointer:: array_avr_work2(:,:)
  1198     integer:: array_shape(2)
  1199     integer:: i, dim_size
  1200     real(DP):: weight_sum
  1203     array_shape = shape( array )
  1204     array_avr_work => array
  1209     if ( space_average(1) ) 
then  1210       dim_size = array_shape(1)
  1212       allocate( array_avr_work1( array_shape(1) &
  1213                                   & , array_shape(2) &
  1216       array_avr_work1 = 0.0
  1219         array_avr_work1(1,:) = array_avr_work1(1,:) + array_avr_work(i,:) * weight1(i)
  1220         weight_sum = weight_sum + weight1(i)
  1222       array_avr_work1 = array_avr_work1 / weight_sum
  1223       array_avr_work  => array_avr_work1
  1228     if ( space_average(2) ) 
then  1229       dim_size = array_shape(2)
  1231       allocate( array_avr_work2( array_shape(1) &
  1232                                   & , array_shape(2) &
  1235       array_avr_work2 = 0.0
  1238         array_avr_work2(:,1) = array_avr_work2(:,1) + array_avr_work(:,i) * weight2(i)
  1239         weight_sum = weight_sum + weight2(i)
  1241       array_avr_work2 = array_avr_work2 / weight_sum
  1242       array_avr_work  => array_avr_work2
  1251       allocate( array_avr( array_shape(1) &
  1252                             & , array_shape(2) &
  1256       array_avr = array_avr_work
  1258       nullify( array_avr_work )
  1260                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  1262       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  1269     & array, space_average, &     ! (in)
  1286     real, 
intent(in), 
target:: array(:,:,:)
  1287     logical, 
intent(in):: space_average(3)
  1288                         real(DP), 
intent(in):: weight1(:)
  1290     real(DP), 
intent(in):: weight2(:)
  1292     real(DP), 
intent(in):: weight3(:)
  1294     real, 
pointer:: array_avr(:,:,:) 
  1296     real, 
pointer:: array_avr_work(:,:,:)
  1298                         real, 
pointer:: array_avr_work1(:,:,:)
  1300     real, 
pointer:: array_avr_work2(:,:,:)
  1302     real, 
pointer:: array_avr_work3(:,:,:)
  1305     integer:: array_shape(3)
  1306     integer:: i, dim_size
  1307     real(DP):: weight_sum
  1310     array_shape = shape( array )
  1311     array_avr_work => array
  1316     if ( space_average(1) ) 
then  1317       dim_size = array_shape(1)
  1319       allocate( array_avr_work1( array_shape(1) &
  1320                                   & , array_shape(2) &
  1322         & , array_shape(3) &
  1325       array_avr_work1 = 0.0
  1328         array_avr_work1(1,:,:) = array_avr_work1(1,:,:) + array_avr_work(i,:,:) * weight1(i)
  1329         weight_sum = weight_sum + weight1(i)
  1331       array_avr_work1 = array_avr_work1 / weight_sum
  1332       array_avr_work  => array_avr_work1
  1337     if ( space_average(2) ) 
then  1338       dim_size = array_shape(2)
  1340       allocate( array_avr_work2( array_shape(1) &
  1341                                   & , array_shape(2) &
  1343         & , array_shape(3) &
  1346       array_avr_work2 = 0.0
  1349         array_avr_work2(:,1,:) = array_avr_work2(:,1,:) + array_avr_work(:,i,:) * weight2(i)
  1350         weight_sum = weight_sum + weight2(i)
  1352       array_avr_work2 = array_avr_work2 / weight_sum
  1353       array_avr_work  => array_avr_work2
  1358     if ( space_average(3) ) 
then  1359       dim_size = array_shape(3)
  1361       allocate( array_avr_work3( array_shape(1) &
  1362                                   & , array_shape(2) &
  1364         & , array_shape(3) &
  1367       array_avr_work3 = 0.0
  1370         array_avr_work3(:,:,1) = array_avr_work3(:,:,1) + array_avr_work(:,:,i) * weight3(i)
  1371         weight_sum = weight_sum + weight3(i)
  1373       array_avr_work3 = array_avr_work3 / weight_sum
  1374       array_avr_work  => array_avr_work3
  1383       allocate( array_avr( array_shape(1) &
  1384                             & , array_shape(2) &
  1386         & , array_shape(3) &
  1390       array_avr = array_avr_work
  1392       nullify( array_avr_work )
  1394                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  1396       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  1398       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  1405     & array, space_average, &     ! (in)
  1424     real, 
intent(in), 
target:: array(:,:,:,:)
  1425     logical, 
intent(in):: space_average(4)
  1426                         real(DP), 
intent(in):: weight1(:)
  1428     real(DP), 
intent(in):: weight2(:)
  1430     real(DP), 
intent(in):: weight3(:)
  1432     real(DP), 
intent(in):: weight4(:)
  1434     real, 
pointer:: array_avr(:,:,:,:) 
  1436     real, 
pointer:: array_avr_work(:,:,:,:)
  1438                         real, 
pointer:: array_avr_work1(:,:,:,:)
  1440     real, 
pointer:: array_avr_work2(:,:,:,:)
  1442     real, 
pointer:: array_avr_work3(:,:,:,:)
  1444     real, 
pointer:: array_avr_work4(:,:,:,:)
  1447     integer:: array_shape(4)
  1448     integer:: i, dim_size
  1449     real(DP):: weight_sum
  1452     array_shape = shape( array )
  1453     array_avr_work => array
  1458     if ( space_average(1) ) 
then  1459       dim_size = array_shape(1)
  1461       allocate( array_avr_work1( array_shape(1) &
  1462                                   & , array_shape(2) &
  1464         & , array_shape(3) &
  1466         & , array_shape(4) &
  1469       array_avr_work1 = 0.0
  1472         array_avr_work1(1,:,:,:) = array_avr_work1(1,:,:,:) + array_avr_work(i,:,:,:) * weight1(i)
  1473         weight_sum = weight_sum + weight1(i)
  1475       array_avr_work1 = array_avr_work1 / weight_sum
  1476       array_avr_work  => array_avr_work1
  1481     if ( space_average(2) ) 
then  1482       dim_size = array_shape(2)
  1484       allocate( array_avr_work2( array_shape(1) &
  1485                                   & , array_shape(2) &
  1487         & , array_shape(3) &
  1489         & , array_shape(4) &
  1492       array_avr_work2 = 0.0
  1495         array_avr_work2(:,1,:,:) = array_avr_work2(:,1,:,:) + array_avr_work(:,i,:,:) * weight2(i)
  1496         weight_sum = weight_sum + weight2(i)
  1498       array_avr_work2 = array_avr_work2 / weight_sum
  1499       array_avr_work  => array_avr_work2
  1504     if ( space_average(3) ) 
then  1505       dim_size = array_shape(3)
  1507       allocate( array_avr_work3( array_shape(1) &
  1508                                   & , array_shape(2) &
  1510         & , array_shape(3) &
  1512         & , array_shape(4) &
  1515       array_avr_work3 = 0.0
  1518         array_avr_work3(:,:,1,:) = array_avr_work3(:,:,1,:) + array_avr_work(:,:,i,:) * weight3(i)
  1519         weight_sum = weight_sum + weight3(i)
  1521       array_avr_work3 = array_avr_work3 / weight_sum
  1522       array_avr_work  => array_avr_work3
  1527     if ( space_average(4) ) 
then  1528       dim_size = array_shape(4)
  1530       allocate( array_avr_work4( array_shape(1) &
  1531                                   & , array_shape(2) &
  1533         & , array_shape(3) &
  1535         & , array_shape(4) &
  1538       array_avr_work4 = 0.0
  1541         array_avr_work4(:,:,:,1) = array_avr_work4(:,:,:,1) + array_avr_work(:,:,:,i) * weight4(i)
  1542         weight_sum = weight_sum + weight4(i)
  1544       array_avr_work4 = array_avr_work4 / weight_sum
  1545       array_avr_work  => array_avr_work4
  1554       allocate( array_avr( array_shape(1) &
  1555                             & , array_shape(2) &
  1557         & , array_shape(3) &
  1559         & , array_shape(4) &
  1563       array_avr = array_avr_work
  1565       nullify( array_avr_work )
  1567                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  1569       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  1571       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  1573       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  1580     & array, space_average, &     ! (in)
  1601     real, 
intent(in), 
target:: array(:,:,:,:,:)
  1602     logical, 
intent(in):: space_average(5)
  1603                         real(DP), 
intent(in):: weight1(:)
  1605     real(DP), 
intent(in):: weight2(:)
  1607     real(DP), 
intent(in):: weight3(:)
  1609     real(DP), 
intent(in):: weight4(:)
  1611     real(DP), 
intent(in):: weight5(:)
  1613     real, 
pointer:: array_avr(:,:,:,:,:) 
  1615     real, 
pointer:: array_avr_work(:,:,:,:,:)
  1617                         real, 
pointer:: array_avr_work1(:,:,:,:,:)
  1619     real, 
pointer:: array_avr_work2(:,:,:,:,:)
  1621     real, 
pointer:: array_avr_work3(:,:,:,:,:)
  1623     real, 
pointer:: array_avr_work4(:,:,:,:,:)
  1625     real, 
pointer:: array_avr_work5(:,:,:,:,:)
  1628     integer:: array_shape(5)
  1629     integer:: i, dim_size
  1630     real(DP):: weight_sum
  1633     array_shape = shape( array )
  1634     array_avr_work => array
  1639     if ( space_average(1) ) 
then  1640       dim_size = array_shape(1)
  1642       allocate( array_avr_work1( array_shape(1) &
  1643                                   & , array_shape(2) &
  1645         & , array_shape(3) &
  1647         & , array_shape(4) &
  1649         & , array_shape(5) &
  1652       array_avr_work1 = 0.0
  1655         array_avr_work1(1,:,:,:,:) = array_avr_work1(1,:,:,:,:) + array_avr_work(i,:,:,:,:) * weight1(i)
  1656         weight_sum = weight_sum + weight1(i)
  1658       array_avr_work1 = array_avr_work1 / weight_sum
  1659       array_avr_work  => array_avr_work1
  1664     if ( space_average(2) ) 
then  1665       dim_size = array_shape(2)
  1667       allocate( array_avr_work2( array_shape(1) &
  1668                                   & , array_shape(2) &
  1670         & , array_shape(3) &
  1672         & , array_shape(4) &
  1674         & , array_shape(5) &
  1677       array_avr_work2 = 0.0
  1680         array_avr_work2(:,1,:,:,:) = array_avr_work2(:,1,:,:,:) + array_avr_work(:,i,:,:,:) * weight2(i)
  1681         weight_sum = weight_sum + weight2(i)
  1683       array_avr_work2 = array_avr_work2 / weight_sum
  1684       array_avr_work  => array_avr_work2
  1689     if ( space_average(3) ) 
then  1690       dim_size = array_shape(3)
  1692       allocate( array_avr_work3( array_shape(1) &
  1693                                   & , array_shape(2) &
  1695         & , array_shape(3) &
  1697         & , array_shape(4) &
  1699         & , array_shape(5) &
  1702       array_avr_work3 = 0.0
  1705         array_avr_work3(:,:,1,:,:) = array_avr_work3(:,:,1,:,:) + array_avr_work(:,:,i,:,:) * weight3(i)
  1706         weight_sum = weight_sum + weight3(i)
  1708       array_avr_work3 = array_avr_work3 / weight_sum
  1709       array_avr_work  => array_avr_work3
  1714     if ( space_average(4) ) 
then  1715       dim_size = array_shape(4)
  1717       allocate( array_avr_work4( array_shape(1) &
  1718                                   & , array_shape(2) &
  1720         & , array_shape(3) &
  1722         & , array_shape(4) &
  1724         & , array_shape(5) &
  1727       array_avr_work4 = 0.0
  1730         array_avr_work4(:,:,:,1,:) = array_avr_work4(:,:,:,1,:) + array_avr_work(:,:,:,i,:) * weight4(i)
  1731         weight_sum = weight_sum + weight4(i)
  1733       array_avr_work4 = array_avr_work4 / weight_sum
  1734       array_avr_work  => array_avr_work4
  1739     if ( space_average(5) ) 
then  1740       dim_size = array_shape(5)
  1742       allocate( array_avr_work5( array_shape(1) &
  1743                                   & , array_shape(2) &
  1745         & , array_shape(3) &
  1747         & , array_shape(4) &
  1749         & , array_shape(5) &
  1752       array_avr_work5 = 0.0
  1755         array_avr_work5(:,:,:,:,1) = array_avr_work5(:,:,:,:,1) + array_avr_work(:,:,:,:,i) * weight5(i)
  1756         weight_sum = weight_sum + weight5(i)
  1758       array_avr_work5 = array_avr_work5 / weight_sum
  1759       array_avr_work  => array_avr_work5
  1768       allocate( array_avr( array_shape(1) &
  1769                             & , array_shape(2) &
  1771         & , array_shape(3) &
  1773         & , array_shape(4) &
  1775         & , array_shape(5) &
  1779       array_avr = array_avr_work
  1781       nullify( array_avr_work )
  1783                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  1785       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  1787       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  1789       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  1791       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  1798     & array, space_average, &     ! (in)
  1821     real, 
intent(in), 
target:: array(:,:,:,:,:,:)
  1822     logical, 
intent(in):: space_average(6)
  1823                         real(DP), 
intent(in):: weight1(:)
  1825     real(DP), 
intent(in):: weight2(:)
  1827     real(DP), 
intent(in):: weight3(:)
  1829     real(DP), 
intent(in):: weight4(:)
  1831     real(DP), 
intent(in):: weight5(:)
  1833     real(DP), 
intent(in):: weight6(:)
  1835     real, 
pointer:: array_avr(:,:,:,:,:,:) 
  1837     real, 
pointer:: array_avr_work(:,:,:,:,:,:)
  1839                         real, 
pointer:: array_avr_work1(:,:,:,:,:,:)
  1841     real, 
pointer:: array_avr_work2(:,:,:,:,:,:)
  1843     real, 
pointer:: array_avr_work3(:,:,:,:,:,:)
  1845     real, 
pointer:: array_avr_work4(:,:,:,:,:,:)
  1847     real, 
pointer:: array_avr_work5(:,:,:,:,:,:)
  1849     real, 
pointer:: array_avr_work6(:,:,:,:,:,:)
  1852     integer:: array_shape(6)
  1853     integer:: i, dim_size
  1854     real(DP):: weight_sum
  1857     array_shape = shape( array )
  1858     array_avr_work => array
  1863     if ( space_average(1) ) 
then  1864       dim_size = array_shape(1)
  1866       allocate( array_avr_work1( array_shape(1) &
  1867                                   & , array_shape(2) &
  1869         & , array_shape(3) &
  1871         & , array_shape(4) &
  1873         & , array_shape(5) &
  1875         & , array_shape(6) &
  1878       array_avr_work1 = 0.0
  1881         array_avr_work1(1,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:) * weight1(i)
  1882         weight_sum = weight_sum + weight1(i)
  1884       array_avr_work1 = array_avr_work1 / weight_sum
  1885       array_avr_work  => array_avr_work1
  1890     if ( space_average(2) ) 
then  1891       dim_size = array_shape(2)
  1893       allocate( array_avr_work2( array_shape(1) &
  1894                                   & , array_shape(2) &
  1896         & , array_shape(3) &
  1898         & , array_shape(4) &
  1900         & , array_shape(5) &
  1902         & , array_shape(6) &
  1905       array_avr_work2 = 0.0
  1908         array_avr_work2(:,1,:,:,:,:) = array_avr_work2(:,1,:,:,:,:) + array_avr_work(:,i,:,:,:,:) * weight2(i)
  1909         weight_sum = weight_sum + weight2(i)
  1911       array_avr_work2 = array_avr_work2 / weight_sum
  1912       array_avr_work  => array_avr_work2
  1917     if ( space_average(3) ) 
then  1918       dim_size = array_shape(3)
  1920       allocate( array_avr_work3( array_shape(1) &
  1921                                   & , array_shape(2) &
  1923         & , array_shape(3) &
  1925         & , array_shape(4) &
  1927         & , array_shape(5) &
  1929         & , array_shape(6) &
  1932       array_avr_work3 = 0.0
  1935         array_avr_work3(:,:,1,:,:,:) = array_avr_work3(:,:,1,:,:,:) + array_avr_work(:,:,i,:,:,:) * weight3(i)
  1936         weight_sum = weight_sum + weight3(i)
  1938       array_avr_work3 = array_avr_work3 / weight_sum
  1939       array_avr_work  => array_avr_work3
  1944     if ( space_average(4) ) 
then  1945       dim_size = array_shape(4)
  1947       allocate( array_avr_work4( array_shape(1) &
  1948                                   & , array_shape(2) &
  1950         & , array_shape(3) &
  1952         & , array_shape(4) &
  1954         & , array_shape(5) &
  1956         & , array_shape(6) &
  1959       array_avr_work4 = 0.0
  1962         array_avr_work4(:,:,:,1,:,:) = array_avr_work4(:,:,:,1,:,:) + array_avr_work(:,:,:,i,:,:) * weight4(i)
  1963         weight_sum = weight_sum + weight4(i)
  1965       array_avr_work4 = array_avr_work4 / weight_sum
  1966       array_avr_work  => array_avr_work4
  1971     if ( space_average(5) ) 
then  1972       dim_size = array_shape(5)
  1974       allocate( array_avr_work5( array_shape(1) &
  1975                                   & , array_shape(2) &
  1977         & , array_shape(3) &
  1979         & , array_shape(4) &
  1981         & , array_shape(5) &
  1983         & , array_shape(6) &
  1986       array_avr_work5 = 0.0
  1989         array_avr_work5(:,:,:,:,1,:) = array_avr_work5(:,:,:,:,1,:) + array_avr_work(:,:,:,:,i,:) * weight5(i)
  1990         weight_sum = weight_sum + weight5(i)
  1992       array_avr_work5 = array_avr_work5 / weight_sum
  1993       array_avr_work  => array_avr_work5
  1998     if ( space_average(6) ) 
then  1999       dim_size = array_shape(6)
  2001       allocate( array_avr_work6( array_shape(1) &
  2002                                   & , array_shape(2) &
  2004         & , array_shape(3) &
  2006         & , array_shape(4) &
  2008         & , array_shape(5) &
  2010         & , array_shape(6) &
  2013       array_avr_work6 = 0.0
  2016         array_avr_work6(:,:,:,:,:,1) = array_avr_work6(:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,i) * weight6(i)
  2017         weight_sum = weight_sum + weight6(i)
  2019       array_avr_work6 = array_avr_work6 / weight_sum
  2020       array_avr_work  => array_avr_work6
  2029       allocate( array_avr( array_shape(1) &
  2030                             & , array_shape(2) &
  2032         & , array_shape(3) &
  2034         & , array_shape(4) &
  2036         & , array_shape(5) &
  2038         & , array_shape(6) &
  2042       array_avr = array_avr_work
  2044       nullify( array_avr_work )
  2046                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2048       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  2050       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  2052       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  2054       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  2056       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  2063     & array, space_average, &     ! (in)
  2088     real, 
intent(in), 
target:: array(:,:,:,:,:,:,:)
  2089     logical, 
intent(in):: space_average(7)
  2090                         real(DP), 
intent(in):: weight1(:)
  2092     real(DP), 
intent(in):: weight2(:)
  2094     real(DP), 
intent(in):: weight3(:)
  2096     real(DP), 
intent(in):: weight4(:)
  2098     real(DP), 
intent(in):: weight5(:)
  2100     real(DP), 
intent(in):: weight6(:)
  2102     real(DP), 
intent(in):: weight7(:)
  2104     real, 
pointer:: array_avr(:,:,:,:,:,:,:) 
  2106     real, 
pointer:: array_avr_work(:,:,:,:,:,:,:)
  2108                         real, 
pointer:: array_avr_work1(:,:,:,:,:,:,:)
  2110     real, 
pointer:: array_avr_work2(:,:,:,:,:,:,:)
  2112     real, 
pointer:: array_avr_work3(:,:,:,:,:,:,:)
  2114     real, 
pointer:: array_avr_work4(:,:,:,:,:,:,:)
  2116     real, 
pointer:: array_avr_work5(:,:,:,:,:,:,:)
  2118     real, 
pointer:: array_avr_work6(:,:,:,:,:,:,:)
  2120     real, 
pointer:: array_avr_work7(:,:,:,:,:,:,:)
  2123     integer:: array_shape(7)
  2124     integer:: i, dim_size
  2125     real(DP):: weight_sum
  2128     array_shape = shape( array )
  2129     array_avr_work => array
  2134     if ( space_average(1) ) 
then  2135       dim_size = array_shape(1)
  2137       allocate( array_avr_work1( array_shape(1) &
  2138                                   & , array_shape(2) &
  2140         & , array_shape(3) &
  2142         & , array_shape(4) &
  2144         & , array_shape(5) &
  2146         & , array_shape(6) &
  2148         & , array_shape(7) &
  2151       array_avr_work1 = 0.0
  2154         array_avr_work1(1,:,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:,:) * weight1(i)
  2155         weight_sum = weight_sum + weight1(i)
  2157       array_avr_work1 = array_avr_work1 / weight_sum
  2158       array_avr_work  => array_avr_work1
  2163     if ( space_average(2) ) 
then  2164       dim_size = array_shape(2)
  2166       allocate( array_avr_work2( array_shape(1) &
  2167                                   & , array_shape(2) &
  2169         & , array_shape(3) &
  2171         & , array_shape(4) &
  2173         & , array_shape(5) &
  2175         & , array_shape(6) &
  2177         & , array_shape(7) &
  2180       array_avr_work2 = 0.0
  2183         array_avr_work2(:,1,:,:,:,:,:) = array_avr_work2(:,1,:,:,:,:,:) + array_avr_work(:,i,:,:,:,:,:) * weight2(i)
  2184         weight_sum = weight_sum + weight2(i)
  2186       array_avr_work2 = array_avr_work2 / weight_sum
  2187       array_avr_work  => array_avr_work2
  2192     if ( space_average(3) ) 
then  2193       dim_size = array_shape(3)
  2195       allocate( array_avr_work3( array_shape(1) &
  2196                                   & , array_shape(2) &
  2198         & , array_shape(3) &
  2200         & , array_shape(4) &
  2202         & , array_shape(5) &
  2204         & , array_shape(6) &
  2206         & , array_shape(7) &
  2209       array_avr_work3 = 0.0
  2212         array_avr_work3(:,:,1,:,:,:,:) = array_avr_work3(:,:,1,:,:,:,:) + array_avr_work(:,:,i,:,:,:,:) * weight3(i)
  2213         weight_sum = weight_sum + weight3(i)
  2215       array_avr_work3 = array_avr_work3 / weight_sum
  2216       array_avr_work  => array_avr_work3
  2221     if ( space_average(4) ) 
then  2222       dim_size = array_shape(4)
  2224       allocate( array_avr_work4( array_shape(1) &
  2225                                   & , array_shape(2) &
  2227         & , array_shape(3) &
  2229         & , array_shape(4) &
  2231         & , array_shape(5) &
  2233         & , array_shape(6) &
  2235         & , array_shape(7) &
  2238       array_avr_work4 = 0.0
  2241         array_avr_work4(:,:,:,1,:,:,:) = array_avr_work4(:,:,:,1,:,:,:) + array_avr_work(:,:,:,i,:,:,:) * weight4(i)
  2242         weight_sum = weight_sum + weight4(i)
  2244       array_avr_work4 = array_avr_work4 / weight_sum
  2245       array_avr_work  => array_avr_work4
  2250     if ( space_average(5) ) 
then  2251       dim_size = array_shape(5)
  2253       allocate( array_avr_work5( array_shape(1) &
  2254                                   & , array_shape(2) &
  2256         & , array_shape(3) &
  2258         & , array_shape(4) &
  2260         & , array_shape(5) &
  2262         & , array_shape(6) &
  2264         & , array_shape(7) &
  2267       array_avr_work5 = 0.0
  2270         array_avr_work5(:,:,:,:,1,:,:) = array_avr_work5(:,:,:,:,1,:,:) + array_avr_work(:,:,:,:,i,:,:) * weight5(i)
  2271         weight_sum = weight_sum + weight5(i)
  2273       array_avr_work5 = array_avr_work5 / weight_sum
  2274       array_avr_work  => array_avr_work5
  2279     if ( space_average(6) ) 
then  2280       dim_size = array_shape(6)
  2282       allocate( array_avr_work6( array_shape(1) &
  2283                                   & , array_shape(2) &
  2285         & , array_shape(3) &
  2287         & , array_shape(4) &
  2289         & , array_shape(5) &
  2291         & , array_shape(6) &
  2293         & , array_shape(7) &
  2296       array_avr_work6 = 0.0
  2299         array_avr_work6(:,:,:,:,:,1,:) = array_avr_work6(:,:,:,:,:,1,:) + array_avr_work(:,:,:,:,:,i,:) * weight6(i)
  2300         weight_sum = weight_sum + weight6(i)
  2302       array_avr_work6 = array_avr_work6 / weight_sum
  2303       array_avr_work  => array_avr_work6
  2308     if ( space_average(7) ) 
then  2309       dim_size = array_shape(7)
  2311       allocate( array_avr_work7( array_shape(1) &
  2312                                   & , array_shape(2) &
  2314         & , array_shape(3) &
  2316         & , array_shape(4) &
  2318         & , array_shape(5) &
  2320         & , array_shape(6) &
  2322         & , array_shape(7) &
  2325       array_avr_work7 = 0.0
  2328         array_avr_work7(:,:,:,:,:,:,1) = array_avr_work7(:,:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,:,i) * weight7(i)
  2329         weight_sum = weight_sum + weight7(i)
  2331       array_avr_work7 = array_avr_work7 / weight_sum
  2332       array_avr_work  => array_avr_work7
  2341       allocate( array_avr( array_shape(1) &
  2342                             & , array_shape(2) &
  2344         & , array_shape(3) &
  2346         & , array_shape(4) &
  2348         & , array_shape(5) &
  2350         & , array_shape(6) &
  2352         & , array_shape(7) &
  2356       array_avr = array_avr_work
  2358       nullify( array_avr_work )
  2360                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2362       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  2364       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  2366       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  2368       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  2370       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  2372       if ( 
associated( array_avr_work7 ) ) 
deallocate( array_avr_work7 )
  2379     & array, space_average, &     ! (in)
  2392     real(DP), 
intent(in), 
target:: array(:)
  2393     logical, 
intent(in):: space_average(1)
  2394                         real(DP), 
intent(in):: weight1(:)
  2396     real(DP), 
pointer:: array_avr(:) 
  2398     real(DP), 
pointer:: array_avr_work(:)
  2400                         real(DP), 
pointer:: array_avr_work1(:)
  2403     integer:: array_shape(1)
  2404     integer:: i, dim_size
  2405     real(DP):: weight_sum
  2408     array_shape = shape( array )
  2409     array_avr_work => array
  2414     if ( space_average(1) ) 
then  2415       dim_size = array_shape(1)
  2417       allocate( array_avr_work1( array_shape(1) &
  2420       array_avr_work1 = 0.0_dp
  2423         array_avr_work1(1) = array_avr_work1(1) + array_avr_work(i) * weight1(i)
  2424         weight_sum = weight_sum + weight1(i)
  2426       array_avr_work1 = array_avr_work1 / weight_sum
  2427       array_avr_work  => array_avr_work1
  2436       allocate( array_avr( array_shape(1) &
  2440       array_avr = array_avr_work
  2442       nullify( array_avr_work )
  2444                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2451     & array, space_average, &     ! (in)
  2466     real(DP), 
intent(in), 
target:: array(:,:)
  2467     logical, 
intent(in):: space_average(2)
  2468                         real(DP), 
intent(in):: weight1(:)
  2470     real(DP), 
intent(in):: weight2(:)
  2472     real(DP), 
pointer:: array_avr(:,:) 
  2474     real(DP), 
pointer:: array_avr_work(:,:)
  2476                         real(DP), 
pointer:: array_avr_work1(:,:)
  2478     real(DP), 
pointer:: array_avr_work2(:,:)
  2481     integer:: array_shape(2)
  2482     integer:: i, dim_size
  2483     real(DP):: weight_sum
  2486     array_shape = shape( array )
  2487     array_avr_work => array
  2492     if ( space_average(1) ) 
then  2493       dim_size = array_shape(1)
  2495       allocate( array_avr_work1( array_shape(1) &
  2496                                   & , array_shape(2) &
  2499       array_avr_work1 = 0.0_dp
  2502         array_avr_work1(1,:) = array_avr_work1(1,:) + array_avr_work(i,:) * weight1(i)
  2503         weight_sum = weight_sum + weight1(i)
  2505       array_avr_work1 = array_avr_work1 / weight_sum
  2506       array_avr_work  => array_avr_work1
  2511     if ( space_average(2) ) 
then  2512       dim_size = array_shape(2)
  2514       allocate( array_avr_work2( array_shape(1) &
  2515                                   & , array_shape(2) &
  2518       array_avr_work2 = 0.0_dp
  2521         array_avr_work2(:,1) = array_avr_work2(:,1) + array_avr_work(:,i) * weight2(i)
  2522         weight_sum = weight_sum + weight2(i)
  2524       array_avr_work2 = array_avr_work2 / weight_sum
  2525       array_avr_work  => array_avr_work2
  2534       allocate( array_avr( array_shape(1) &
  2535                             & , array_shape(2) &
  2539       array_avr = array_avr_work
  2541       nullify( array_avr_work )
  2543                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2545       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  2552     & array, space_average, &     ! (in)
  2569     real(DP), 
intent(in), 
target:: array(:,:,:)
  2570     logical, 
intent(in):: space_average(3)
  2571                         real(DP), 
intent(in):: weight1(:)
  2573     real(DP), 
intent(in):: weight2(:)
  2575     real(DP), 
intent(in):: weight3(:)
  2577     real(DP), 
pointer:: array_avr(:,:,:) 
  2579     real(DP), 
pointer:: array_avr_work(:,:,:)
  2581                         real(DP), 
pointer:: array_avr_work1(:,:,:)
  2583     real(DP), 
pointer:: array_avr_work2(:,:,:)
  2585     real(DP), 
pointer:: array_avr_work3(:,:,:)
  2588     integer:: array_shape(3)
  2589     integer:: i, dim_size
  2590     real(DP):: weight_sum
  2593     array_shape = shape( array )
  2594     array_avr_work => array
  2599     if ( space_average(1) ) 
then  2600       dim_size = array_shape(1)
  2602       allocate( array_avr_work1( array_shape(1) &
  2603                                   & , array_shape(2) &
  2605         & , array_shape(3) &
  2608       array_avr_work1 = 0.0_dp
  2611         array_avr_work1(1,:,:) = array_avr_work1(1,:,:) + array_avr_work(i,:,:) * weight1(i)
  2612         weight_sum = weight_sum + weight1(i)
  2614       array_avr_work1 = array_avr_work1 / weight_sum
  2615       array_avr_work  => array_avr_work1
  2620     if ( space_average(2) ) 
then  2621       dim_size = array_shape(2)
  2623       allocate( array_avr_work2( array_shape(1) &
  2624                                   & , array_shape(2) &
  2626         & , array_shape(3) &
  2629       array_avr_work2 = 0.0_dp
  2632         array_avr_work2(:,1,:) = array_avr_work2(:,1,:) + array_avr_work(:,i,:) * weight2(i)
  2633         weight_sum = weight_sum + weight2(i)
  2635       array_avr_work2 = array_avr_work2 / weight_sum
  2636       array_avr_work  => array_avr_work2
  2641     if ( space_average(3) ) 
then  2642       dim_size = array_shape(3)
  2644       allocate( array_avr_work3( array_shape(1) &
  2645                                   & , array_shape(2) &
  2647         & , array_shape(3) &
  2650       array_avr_work3 = 0.0_dp
  2653         array_avr_work3(:,:,1) = array_avr_work3(:,:,1) + array_avr_work(:,:,i) * weight3(i)
  2654         weight_sum = weight_sum + weight3(i)
  2656       array_avr_work3 = array_avr_work3 / weight_sum
  2657       array_avr_work  => array_avr_work3
  2666       allocate( array_avr( array_shape(1) &
  2667                             & , array_shape(2) &
  2669         & , array_shape(3) &
  2673       array_avr = array_avr_work
  2675       nullify( array_avr_work )
  2677                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2679       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  2681       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  2688     & array, space_average, &     ! (in)
  2707     real(DP), 
intent(in), 
target:: array(:,:,:,:)
  2708     logical, 
intent(in):: space_average(4)
  2709                         real(DP), 
intent(in):: weight1(:)
  2711     real(DP), 
intent(in):: weight2(:)
  2713     real(DP), 
intent(in):: weight3(:)
  2715     real(DP), 
intent(in):: weight4(:)
  2717     real(DP), 
pointer:: array_avr(:,:,:,:) 
  2719     real(DP), 
pointer:: array_avr_work(:,:,:,:)
  2721                         real(DP), 
pointer:: array_avr_work1(:,:,:,:)
  2723     real(DP), 
pointer:: array_avr_work2(:,:,:,:)
  2725     real(DP), 
pointer:: array_avr_work3(:,:,:,:)
  2727     real(DP), 
pointer:: array_avr_work4(:,:,:,:)
  2730     integer:: array_shape(4)
  2731     integer:: i, dim_size
  2732     real(DP):: weight_sum
  2735     array_shape = shape( array )
  2736     array_avr_work => array
  2741     if ( space_average(1) ) 
then  2742       dim_size = array_shape(1)
  2744       allocate( array_avr_work1( array_shape(1) &
  2745                                   & , array_shape(2) &
  2747         & , array_shape(3) &
  2749         & , array_shape(4) &
  2752       array_avr_work1 = 0.0_dp
  2755         array_avr_work1(1,:,:,:) = array_avr_work1(1,:,:,:) + array_avr_work(i,:,:,:) * weight1(i)
  2756         weight_sum = weight_sum + weight1(i)
  2758       array_avr_work1 = array_avr_work1 / weight_sum
  2759       array_avr_work  => array_avr_work1
  2764     if ( space_average(2) ) 
then  2765       dim_size = array_shape(2)
  2767       allocate( array_avr_work2( array_shape(1) &
  2768                                   & , array_shape(2) &
  2770         & , array_shape(3) &
  2772         & , array_shape(4) &
  2775       array_avr_work2 = 0.0_dp
  2778         array_avr_work2(:,1,:,:) = array_avr_work2(:,1,:,:) + array_avr_work(:,i,:,:) * weight2(i)
  2779         weight_sum = weight_sum + weight2(i)
  2781       array_avr_work2 = array_avr_work2 / weight_sum
  2782       array_avr_work  => array_avr_work2
  2787     if ( space_average(3) ) 
then  2788       dim_size = array_shape(3)
  2790       allocate( array_avr_work3( array_shape(1) &
  2791                                   & , array_shape(2) &
  2793         & , array_shape(3) &
  2795         & , array_shape(4) &
  2798       array_avr_work3 = 0.0_dp
  2801         array_avr_work3(:,:,1,:) = array_avr_work3(:,:,1,:) + array_avr_work(:,:,i,:) * weight3(i)
  2802         weight_sum = weight_sum + weight3(i)
  2804       array_avr_work3 = array_avr_work3 / weight_sum
  2805       array_avr_work  => array_avr_work3
  2810     if ( space_average(4) ) 
then  2811       dim_size = array_shape(4)
  2813       allocate( array_avr_work4( array_shape(1) &
  2814                                   & , array_shape(2) &
  2816         & , array_shape(3) &
  2818         & , array_shape(4) &
  2821       array_avr_work4 = 0.0_dp
  2824         array_avr_work4(:,:,:,1) = array_avr_work4(:,:,:,1) + array_avr_work(:,:,:,i) * weight4(i)
  2825         weight_sum = weight_sum + weight4(i)
  2827       array_avr_work4 = array_avr_work4 / weight_sum
  2828       array_avr_work  => array_avr_work4
  2837       allocate( array_avr( array_shape(1) &
  2838                             & , array_shape(2) &
  2840         & , array_shape(3) &
  2842         & , array_shape(4) &
  2846       array_avr = array_avr_work
  2848       nullify( array_avr_work )
  2850                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  2852       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  2854       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  2856       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  2863     & array, space_average, &     ! (in)
  2884     real(DP), 
intent(in), 
target:: array(:,:,:,:,:)
  2885     logical, 
intent(in):: space_average(5)
  2886                         real(DP), 
intent(in):: weight1(:)
  2888     real(DP), 
intent(in):: weight2(:)
  2890     real(DP), 
intent(in):: weight3(:)
  2892     real(DP), 
intent(in):: weight4(:)
  2894     real(DP), 
intent(in):: weight5(:)
  2896     real(DP), 
pointer:: array_avr(:,:,:,:,:) 
  2898     real(DP), 
pointer:: array_avr_work(:,:,:,:,:)
  2900                         real(DP), 
pointer:: array_avr_work1(:,:,:,:,:)
  2902     real(DP), 
pointer:: array_avr_work2(:,:,:,:,:)
  2904     real(DP), 
pointer:: array_avr_work3(:,:,:,:,:)
  2906     real(DP), 
pointer:: array_avr_work4(:,:,:,:,:)
  2908     real(DP), 
pointer:: array_avr_work5(:,:,:,:,:)
  2911     integer:: array_shape(5)
  2912     integer:: i, dim_size
  2913     real(DP):: weight_sum
  2916     array_shape = shape( array )
  2917     array_avr_work => array
  2922     if ( space_average(1) ) 
then  2923       dim_size = array_shape(1)
  2925       allocate( array_avr_work1( array_shape(1) &
  2926                                   & , array_shape(2) &
  2928         & , array_shape(3) &
  2930         & , array_shape(4) &
  2932         & , array_shape(5) &
  2935       array_avr_work1 = 0.0_dp
  2938         array_avr_work1(1,:,:,:,:) = array_avr_work1(1,:,:,:,:) + array_avr_work(i,:,:,:,:) * weight1(i)
  2939         weight_sum = weight_sum + weight1(i)
  2941       array_avr_work1 = array_avr_work1 / weight_sum
  2942       array_avr_work  => array_avr_work1
  2947     if ( space_average(2) ) 
then  2948       dim_size = array_shape(2)
  2950       allocate( array_avr_work2( array_shape(1) &
  2951                                   & , array_shape(2) &
  2953         & , array_shape(3) &
  2955         & , array_shape(4) &
  2957         & , array_shape(5) &
  2960       array_avr_work2 = 0.0_dp
  2963         array_avr_work2(:,1,:,:,:) = array_avr_work2(:,1,:,:,:) + array_avr_work(:,i,:,:,:) * weight2(i)
  2964         weight_sum = weight_sum + weight2(i)
  2966       array_avr_work2 = array_avr_work2 / weight_sum
  2967       array_avr_work  => array_avr_work2
  2972     if ( space_average(3) ) 
then  2973       dim_size = array_shape(3)
  2975       allocate( array_avr_work3( array_shape(1) &
  2976                                   & , array_shape(2) &
  2978         & , array_shape(3) &
  2980         & , array_shape(4) &
  2982         & , array_shape(5) &
  2985       array_avr_work3 = 0.0_dp
  2988         array_avr_work3(:,:,1,:,:) = array_avr_work3(:,:,1,:,:) + array_avr_work(:,:,i,:,:) * weight3(i)
  2989         weight_sum = weight_sum + weight3(i)
  2991       array_avr_work3 = array_avr_work3 / weight_sum
  2992       array_avr_work  => array_avr_work3
  2997     if ( space_average(4) ) 
then  2998       dim_size = array_shape(4)
  3000       allocate( array_avr_work4( array_shape(1) &
  3001                                   & , array_shape(2) &
  3003         & , array_shape(3) &
  3005         & , array_shape(4) &
  3007         & , array_shape(5) &
  3010       array_avr_work4 = 0.0_dp
  3013         array_avr_work4(:,:,:,1,:) = array_avr_work4(:,:,:,1,:) + array_avr_work(:,:,:,i,:) * weight4(i)
  3014         weight_sum = weight_sum + weight4(i)
  3016       array_avr_work4 = array_avr_work4 / weight_sum
  3017       array_avr_work  => array_avr_work4
  3022     if ( space_average(5) ) 
then  3023       dim_size = array_shape(5)
  3025       allocate( array_avr_work5( array_shape(1) &
  3026                                   & , array_shape(2) &
  3028         & , array_shape(3) &
  3030         & , array_shape(4) &
  3032         & , array_shape(5) &
  3035       array_avr_work5 = 0.0_dp
  3038         array_avr_work5(:,:,:,:,1) = array_avr_work5(:,:,:,:,1) + array_avr_work(:,:,:,:,i) * weight5(i)
  3039         weight_sum = weight_sum + weight5(i)
  3041       array_avr_work5 = array_avr_work5 / weight_sum
  3042       array_avr_work  => array_avr_work5
  3051       allocate( array_avr( array_shape(1) &
  3052                             & , array_shape(2) &
  3054         & , array_shape(3) &
  3056         & , array_shape(4) &
  3058         & , array_shape(5) &
  3062       array_avr = array_avr_work
  3064       nullify( array_avr_work )
  3066                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3068       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  3070       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  3072       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  3074       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  3081     & array, space_average, &     ! (in)
  3104     real(DP), 
intent(in), 
target:: array(:,:,:,:,:,:)
  3105     logical, 
intent(in):: space_average(6)
  3106                         real(DP), 
intent(in):: weight1(:)
  3108     real(DP), 
intent(in):: weight2(:)
  3110     real(DP), 
intent(in):: weight3(:)
  3112     real(DP), 
intent(in):: weight4(:)
  3114     real(DP), 
intent(in):: weight5(:)
  3116     real(DP), 
intent(in):: weight6(:)
  3118     real(DP), 
pointer:: array_avr(:,:,:,:,:,:) 
  3120     real(DP), 
pointer:: array_avr_work(:,:,:,:,:,:)
  3122                         real(DP), 
pointer:: array_avr_work1(:,:,:,:,:,:)
  3124     real(DP), 
pointer:: array_avr_work2(:,:,:,:,:,:)
  3126     real(DP), 
pointer:: array_avr_work3(:,:,:,:,:,:)
  3128     real(DP), 
pointer:: array_avr_work4(:,:,:,:,:,:)
  3130     real(DP), 
pointer:: array_avr_work5(:,:,:,:,:,:)
  3132     real(DP), 
pointer:: array_avr_work6(:,:,:,:,:,:)
  3135     integer:: array_shape(6)
  3136     integer:: i, dim_size
  3137     real(DP):: weight_sum
  3140     array_shape = shape( array )
  3141     array_avr_work => array
  3146     if ( space_average(1) ) 
then  3147       dim_size = array_shape(1)
  3149       allocate( array_avr_work1( array_shape(1) &
  3150                                   & , array_shape(2) &
  3152         & , array_shape(3) &
  3154         & , array_shape(4) &
  3156         & , array_shape(5) &
  3158         & , array_shape(6) &
  3161       array_avr_work1 = 0.0_dp
  3164         array_avr_work1(1,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:) * weight1(i)
  3165         weight_sum = weight_sum + weight1(i)
  3167       array_avr_work1 = array_avr_work1 / weight_sum
  3168       array_avr_work  => array_avr_work1
  3173     if ( space_average(2) ) 
then  3174       dim_size = array_shape(2)
  3176       allocate( array_avr_work2( array_shape(1) &
  3177                                   & , array_shape(2) &
  3179         & , array_shape(3) &
  3181         & , array_shape(4) &
  3183         & , array_shape(5) &
  3185         & , array_shape(6) &
  3188       array_avr_work2 = 0.0_dp
  3191         array_avr_work2(:,1,:,:,:,:) = array_avr_work2(:,1,:,:,:,:) + array_avr_work(:,i,:,:,:,:) * weight2(i)
  3192         weight_sum = weight_sum + weight2(i)
  3194       array_avr_work2 = array_avr_work2 / weight_sum
  3195       array_avr_work  => array_avr_work2
  3200     if ( space_average(3) ) 
then  3201       dim_size = array_shape(3)
  3203       allocate( array_avr_work3( array_shape(1) &
  3204                                   & , array_shape(2) &
  3206         & , array_shape(3) &
  3208         & , array_shape(4) &
  3210         & , array_shape(5) &
  3212         & , array_shape(6) &
  3215       array_avr_work3 = 0.0_dp
  3218         array_avr_work3(:,:,1,:,:,:) = array_avr_work3(:,:,1,:,:,:) + array_avr_work(:,:,i,:,:,:) * weight3(i)
  3219         weight_sum = weight_sum + weight3(i)
  3221       array_avr_work3 = array_avr_work3 / weight_sum
  3222       array_avr_work  => array_avr_work3
  3227     if ( space_average(4) ) 
then  3228       dim_size = array_shape(4)
  3230       allocate( array_avr_work4( array_shape(1) &
  3231                                   & , array_shape(2) &
  3233         & , array_shape(3) &
  3235         & , array_shape(4) &
  3237         & , array_shape(5) &
  3239         & , array_shape(6) &
  3242       array_avr_work4 = 0.0_dp
  3245         array_avr_work4(:,:,:,1,:,:) = array_avr_work4(:,:,:,1,:,:) + array_avr_work(:,:,:,i,:,:) * weight4(i)
  3246         weight_sum = weight_sum + weight4(i)
  3248       array_avr_work4 = array_avr_work4 / weight_sum
  3249       array_avr_work  => array_avr_work4
  3254     if ( space_average(5) ) 
then  3255       dim_size = array_shape(5)
  3257       allocate( array_avr_work5( array_shape(1) &
  3258                                   & , array_shape(2) &
  3260         & , array_shape(3) &
  3262         & , array_shape(4) &
  3264         & , array_shape(5) &
  3266         & , array_shape(6) &
  3269       array_avr_work5 = 0.0_dp
  3272         array_avr_work5(:,:,:,:,1,:) = array_avr_work5(:,:,:,:,1,:) + array_avr_work(:,:,:,:,i,:) * weight5(i)
  3273         weight_sum = weight_sum + weight5(i)
  3275       array_avr_work5 = array_avr_work5 / weight_sum
  3276       array_avr_work  => array_avr_work5
  3281     if ( space_average(6) ) 
then  3282       dim_size = array_shape(6)
  3284       allocate( array_avr_work6( array_shape(1) &
  3285                                   & , array_shape(2) &
  3287         & , array_shape(3) &
  3289         & , array_shape(4) &
  3291         & , array_shape(5) &
  3293         & , array_shape(6) &
  3296       array_avr_work6 = 0.0_dp
  3299         array_avr_work6(:,:,:,:,:,1) = array_avr_work6(:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,i) * weight6(i)
  3300         weight_sum = weight_sum + weight6(i)
  3302       array_avr_work6 = array_avr_work6 / weight_sum
  3303       array_avr_work  => array_avr_work6
  3312       allocate( array_avr( array_shape(1) &
  3313                             & , array_shape(2) &
  3315         & , array_shape(3) &
  3317         & , array_shape(4) &
  3319         & , array_shape(5) &
  3321         & , array_shape(6) &
  3325       array_avr = array_avr_work
  3327       nullify( array_avr_work )
  3329                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3331       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  3333       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  3335       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  3337       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  3339       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  3346     & array, space_average, &     ! (in)
  3371     real(DP), 
intent(in), 
target:: array(:,:,:,:,:,:,:)
  3372     logical, 
intent(in):: space_average(7)
  3373                         real(DP), 
intent(in):: weight1(:)
  3375     real(DP), 
intent(in):: weight2(:)
  3377     real(DP), 
intent(in):: weight3(:)
  3379     real(DP), 
intent(in):: weight4(:)
  3381     real(DP), 
intent(in):: weight5(:)
  3383     real(DP), 
intent(in):: weight6(:)
  3385     real(DP), 
intent(in):: weight7(:)
  3387     real(DP), 
pointer:: array_avr(:,:,:,:,:,:,:) 
  3389     real(DP), 
pointer:: array_avr_work(:,:,:,:,:,:,:)
  3391                         real(DP), 
pointer:: array_avr_work1(:,:,:,:,:,:,:)
  3393     real(DP), 
pointer:: array_avr_work2(:,:,:,:,:,:,:)
  3395     real(DP), 
pointer:: array_avr_work3(:,:,:,:,:,:,:)
  3397     real(DP), 
pointer:: array_avr_work4(:,:,:,:,:,:,:)
  3399     real(DP), 
pointer:: array_avr_work5(:,:,:,:,:,:,:)
  3401     real(DP), 
pointer:: array_avr_work6(:,:,:,:,:,:,:)
  3403     real(DP), 
pointer:: array_avr_work7(:,:,:,:,:,:,:)
  3406     integer:: array_shape(7)
  3407     integer:: i, dim_size
  3408     real(DP):: weight_sum
  3411     array_shape = shape( array )
  3412     array_avr_work => array
  3417     if ( space_average(1) ) 
then  3418       dim_size = array_shape(1)
  3420       allocate( array_avr_work1( array_shape(1) &
  3421                                   & , array_shape(2) &
  3423         & , array_shape(3) &
  3425         & , array_shape(4) &
  3427         & , array_shape(5) &
  3429         & , array_shape(6) &
  3431         & , array_shape(7) &
  3434       array_avr_work1 = 0.0_dp
  3437         array_avr_work1(1,:,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:,:) * weight1(i)
  3438         weight_sum = weight_sum + weight1(i)
  3440       array_avr_work1 = array_avr_work1 / weight_sum
  3441       array_avr_work  => array_avr_work1
  3446     if ( space_average(2) ) 
then  3447       dim_size = array_shape(2)
  3449       allocate( array_avr_work2( array_shape(1) &
  3450                                   & , array_shape(2) &
  3452         & , array_shape(3) &
  3454         & , array_shape(4) &
  3456         & , array_shape(5) &
  3458         & , array_shape(6) &
  3460         & , array_shape(7) &
  3463       array_avr_work2 = 0.0_dp
  3466         array_avr_work2(:,1,:,:,:,:,:) = array_avr_work2(:,1,:,:,:,:,:) + array_avr_work(:,i,:,:,:,:,:) * weight2(i)
  3467         weight_sum = weight_sum + weight2(i)
  3469       array_avr_work2 = array_avr_work2 / weight_sum
  3470       array_avr_work  => array_avr_work2
  3475     if ( space_average(3) ) 
then  3476       dim_size = array_shape(3)
  3478       allocate( array_avr_work3( array_shape(1) &
  3479                                   & , array_shape(2) &
  3481         & , array_shape(3) &
  3483         & , array_shape(4) &
  3485         & , array_shape(5) &
  3487         & , array_shape(6) &
  3489         & , array_shape(7) &
  3492       array_avr_work3 = 0.0_dp
  3495         array_avr_work3(:,:,1,:,:,:,:) = array_avr_work3(:,:,1,:,:,:,:) + array_avr_work(:,:,i,:,:,:,:) * weight3(i)
  3496         weight_sum = weight_sum + weight3(i)
  3498       array_avr_work3 = array_avr_work3 / weight_sum
  3499       array_avr_work  => array_avr_work3
  3504     if ( space_average(4) ) 
then  3505       dim_size = array_shape(4)
  3507       allocate( array_avr_work4( array_shape(1) &
  3508                                   & , array_shape(2) &
  3510         & , array_shape(3) &
  3512         & , array_shape(4) &
  3514         & , array_shape(5) &
  3516         & , array_shape(6) &
  3518         & , array_shape(7) &
  3521       array_avr_work4 = 0.0_dp
  3524         array_avr_work4(:,:,:,1,:,:,:) = array_avr_work4(:,:,:,1,:,:,:) + array_avr_work(:,:,:,i,:,:,:) * weight4(i)
  3525         weight_sum = weight_sum + weight4(i)
  3527       array_avr_work4 = array_avr_work4 / weight_sum
  3528       array_avr_work  => array_avr_work4
  3533     if ( space_average(5) ) 
then  3534       dim_size = array_shape(5)
  3536       allocate( array_avr_work5( array_shape(1) &
  3537                                   & , array_shape(2) &
  3539         & , array_shape(3) &
  3541         & , array_shape(4) &
  3543         & , array_shape(5) &
  3545         & , array_shape(6) &
  3547         & , array_shape(7) &
  3550       array_avr_work5 = 0.0_dp
  3553         array_avr_work5(:,:,:,:,1,:,:) = array_avr_work5(:,:,:,:,1,:,:) + array_avr_work(:,:,:,:,i,:,:) * weight5(i)
  3554         weight_sum = weight_sum + weight5(i)
  3556       array_avr_work5 = array_avr_work5 / weight_sum
  3557       array_avr_work  => array_avr_work5
  3562     if ( space_average(6) ) 
then  3563       dim_size = array_shape(6)
  3565       allocate( array_avr_work6( array_shape(1) &
  3566                                   & , array_shape(2) &
  3568         & , array_shape(3) &
  3570         & , array_shape(4) &
  3572         & , array_shape(5) &
  3574         & , array_shape(6) &
  3576         & , array_shape(7) &
  3579       array_avr_work6 = 0.0_dp
  3582         array_avr_work6(:,:,:,:,:,1,:) = array_avr_work6(:,:,:,:,:,1,:) + array_avr_work(:,:,:,:,:,i,:) * weight6(i)
  3583         weight_sum = weight_sum + weight6(i)
  3585       array_avr_work6 = array_avr_work6 / weight_sum
  3586       array_avr_work  => array_avr_work6
  3591     if ( space_average(7) ) 
then  3592       dim_size = array_shape(7)
  3594       allocate( array_avr_work7( array_shape(1) &
  3595                                   & , array_shape(2) &
  3597         & , array_shape(3) &
  3599         & , array_shape(4) &
  3601         & , array_shape(5) &
  3603         & , array_shape(6) &
  3605         & , array_shape(7) &
  3608       array_avr_work7 = 0.0_dp
  3611         array_avr_work7(:,:,:,:,:,:,1) = array_avr_work7(:,:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,:,i) * weight7(i)
  3612         weight_sum = weight_sum + weight7(i)
  3614       array_avr_work7 = array_avr_work7 / weight_sum
  3615       array_avr_work  => array_avr_work7
  3624       allocate( array_avr( array_shape(1) &
  3625                             & , array_shape(2) &
  3627         & , array_shape(3) &
  3629         & , array_shape(4) &
  3631         & , array_shape(5) &
  3633         & , array_shape(6) &
  3635         & , array_shape(7) &
  3639       array_avr = array_avr_work
  3641       nullify( array_avr_work )
  3643                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3645       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  3647       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  3649       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  3651       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  3653       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  3655       if ( 
associated( array_avr_work7 ) ) 
deallocate( array_avr_work7 )
  3662     & array, space_average, &     ! (in)
  3675     integer, 
intent(in), 
target:: array(:)
  3676     logical, 
intent(in):: space_average(1)
  3677                         real(DP), 
intent(in):: weight1(:)
  3679     integer, 
pointer:: array_avr(:) 
  3681     integer, 
pointer:: array_avr_work(:)
  3683                         integer, 
pointer:: array_avr_work1(:)
  3686     integer:: array_shape(1)
  3687     integer:: i, dim_size
  3688     real(DP):: weight_sum
  3691     array_shape = shape( array )
  3692     array_avr_work => array
  3697     if ( space_average(1) ) 
then  3698       dim_size = array_shape(1)
  3700       allocate( array_avr_work1( array_shape(1) &
  3706         array_avr_work1(1) = array_avr_work1(1) + array_avr_work(i) * weight1(i)
  3707         weight_sum = weight_sum + weight1(i)
  3709       array_avr_work1 = array_avr_work1 / weight_sum
  3710       array_avr_work  => array_avr_work1
  3719       allocate( array_avr( array_shape(1) &
  3723       array_avr = array_avr_work
  3725       nullify( array_avr_work )
  3727                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3734     & array, space_average, &     ! (in)
  3749     integer, 
intent(in), 
target:: array(:,:)
  3750     logical, 
intent(in):: space_average(2)
  3751                         real(DP), 
intent(in):: weight1(:)
  3753     real(DP), 
intent(in):: weight2(:)
  3755     integer, 
pointer:: array_avr(:,:) 
  3757     integer, 
pointer:: array_avr_work(:,:)
  3759                         integer, 
pointer:: array_avr_work1(:,:)
  3761     integer, 
pointer:: array_avr_work2(:,:)
  3764     integer:: array_shape(2)
  3765     integer:: i, dim_size
  3766     real(DP):: weight_sum
  3769     array_shape = shape( array )
  3770     array_avr_work => array
  3775     if ( space_average(1) ) 
then  3776       dim_size = array_shape(1)
  3778       allocate( array_avr_work1( array_shape(1) &
  3779                                   & , array_shape(2) &
  3785         array_avr_work1(1,:) = array_avr_work1(1,:) + array_avr_work(i,:) * weight1(i)
  3786         weight_sum = weight_sum + weight1(i)
  3788       array_avr_work1 = array_avr_work1 / weight_sum
  3789       array_avr_work  => array_avr_work1
  3794     if ( space_average(2) ) 
then  3795       dim_size = array_shape(2)
  3797       allocate( array_avr_work2( array_shape(1) &
  3798                                   & , array_shape(2) &
  3804         array_avr_work2(:,1) = array_avr_work2(:,1) + array_avr_work(:,i) * weight2(i)
  3805         weight_sum = weight_sum + weight2(i)
  3807       array_avr_work2 = array_avr_work2 / weight_sum
  3808       array_avr_work  => array_avr_work2
  3817       allocate( array_avr( array_shape(1) &
  3818                             & , array_shape(2) &
  3822       array_avr = array_avr_work
  3824       nullify( array_avr_work )
  3826                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3828       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  3835     & array, space_average, &     ! (in)
  3852     integer, 
intent(in), 
target:: array(:,:,:)
  3853     logical, 
intent(in):: space_average(3)
  3854                         real(DP), 
intent(in):: weight1(:)
  3856     real(DP), 
intent(in):: weight2(:)
  3858     real(DP), 
intent(in):: weight3(:)
  3860     integer, 
pointer:: array_avr(:,:,:) 
  3862     integer, 
pointer:: array_avr_work(:,:,:)
  3864                         integer, 
pointer:: array_avr_work1(:,:,:)
  3866     integer, 
pointer:: array_avr_work2(:,:,:)
  3868     integer, 
pointer:: array_avr_work3(:,:,:)
  3871     integer:: array_shape(3)
  3872     integer:: i, dim_size
  3873     real(DP):: weight_sum
  3876     array_shape = shape( array )
  3877     array_avr_work => array
  3882     if ( space_average(1) ) 
then  3883       dim_size = array_shape(1)
  3885       allocate( array_avr_work1( array_shape(1) &
  3886                                   & , array_shape(2) &
  3888         & , array_shape(3) &
  3894         array_avr_work1(1,:,:) = array_avr_work1(1,:,:) + array_avr_work(i,:,:) * weight1(i)
  3895         weight_sum = weight_sum + weight1(i)
  3897       array_avr_work1 = array_avr_work1 / weight_sum
  3898       array_avr_work  => array_avr_work1
  3903     if ( space_average(2) ) 
then  3904       dim_size = array_shape(2)
  3906       allocate( array_avr_work2( array_shape(1) &
  3907                                   & , array_shape(2) &
  3909         & , array_shape(3) &
  3915         array_avr_work2(:,1,:) = array_avr_work2(:,1,:) + array_avr_work(:,i,:) * weight2(i)
  3916         weight_sum = weight_sum + weight2(i)
  3918       array_avr_work2 = array_avr_work2 / weight_sum
  3919       array_avr_work  => array_avr_work2
  3924     if ( space_average(3) ) 
then  3925       dim_size = array_shape(3)
  3927       allocate( array_avr_work3( array_shape(1) &
  3928                                   & , array_shape(2) &
  3930         & , array_shape(3) &
  3936         array_avr_work3(:,:,1) = array_avr_work3(:,:,1) + array_avr_work(:,:,i) * weight3(i)
  3937         weight_sum = weight_sum + weight3(i)
  3939       array_avr_work3 = array_avr_work3 / weight_sum
  3940       array_avr_work  => array_avr_work3
  3949       allocate( array_avr( array_shape(1) &
  3950                             & , array_shape(2) &
  3952         & , array_shape(3) &
  3956       array_avr = array_avr_work
  3958       nullify( array_avr_work )
  3960                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  3962       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  3964       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  3971     & array, space_average, &     ! (in)
  3990     integer, 
intent(in), 
target:: array(:,:,:,:)
  3991     logical, 
intent(in):: space_average(4)
  3992                         real(DP), 
intent(in):: weight1(:)
  3994     real(DP), 
intent(in):: weight2(:)
  3996     real(DP), 
intent(in):: weight3(:)
  3998     real(DP), 
intent(in):: weight4(:)
  4000     integer, 
pointer:: array_avr(:,:,:,:) 
  4002     integer, 
pointer:: array_avr_work(:,:,:,:)
  4004                         integer, 
pointer:: array_avr_work1(:,:,:,:)
  4006     integer, 
pointer:: array_avr_work2(:,:,:,:)
  4008     integer, 
pointer:: array_avr_work3(:,:,:,:)
  4010     integer, 
pointer:: array_avr_work4(:,:,:,:)
  4013     integer:: array_shape(4)
  4014     integer:: i, dim_size
  4015     real(DP):: weight_sum
  4018     array_shape = shape( array )
  4019     array_avr_work => array
  4024     if ( space_average(1) ) 
then  4025       dim_size = array_shape(1)
  4027       allocate( array_avr_work1( array_shape(1) &
  4028                                   & , array_shape(2) &
  4030         & , array_shape(3) &
  4032         & , array_shape(4) &
  4038         array_avr_work1(1,:,:,:) = array_avr_work1(1,:,:,:) + array_avr_work(i,:,:,:) * weight1(i)
  4039         weight_sum = weight_sum + weight1(i)
  4041       array_avr_work1 = array_avr_work1 / weight_sum
  4042       array_avr_work  => array_avr_work1
  4047     if ( space_average(2) ) 
then  4048       dim_size = array_shape(2)
  4050       allocate( array_avr_work2( array_shape(1) &
  4051                                   & , array_shape(2) &
  4053         & , array_shape(3) &
  4055         & , array_shape(4) &
  4061         array_avr_work2(:,1,:,:) = array_avr_work2(:,1,:,:) + array_avr_work(:,i,:,:) * weight2(i)
  4062         weight_sum = weight_sum + weight2(i)
  4064       array_avr_work2 = array_avr_work2 / weight_sum
  4065       array_avr_work  => array_avr_work2
  4070     if ( space_average(3) ) 
then  4071       dim_size = array_shape(3)
  4073       allocate( array_avr_work3( array_shape(1) &
  4074                                   & , array_shape(2) &
  4076         & , array_shape(3) &
  4078         & , array_shape(4) &
  4084         array_avr_work3(:,:,1,:) = array_avr_work3(:,:,1,:) + array_avr_work(:,:,i,:) * weight3(i)
  4085         weight_sum = weight_sum + weight3(i)
  4087       array_avr_work3 = array_avr_work3 / weight_sum
  4088       array_avr_work  => array_avr_work3
  4093     if ( space_average(4) ) 
then  4094       dim_size = array_shape(4)
  4096       allocate( array_avr_work4( array_shape(1) &
  4097                                   & , array_shape(2) &
  4099         & , array_shape(3) &
  4101         & , array_shape(4) &
  4107         array_avr_work4(:,:,:,1) = array_avr_work4(:,:,:,1) + array_avr_work(:,:,:,i) * weight4(i)
  4108         weight_sum = weight_sum + weight4(i)
  4110       array_avr_work4 = array_avr_work4 / weight_sum
  4111       array_avr_work  => array_avr_work4
  4120       allocate( array_avr( array_shape(1) &
  4121                             & , array_shape(2) &
  4123         & , array_shape(3) &
  4125         & , array_shape(4) &
  4129       array_avr = array_avr_work
  4131       nullify( array_avr_work )
  4133                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  4135       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  4137       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  4139       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  4146     & array, space_average, &     ! (in)
  4167     integer, 
intent(in), 
target:: array(:,:,:,:,:)
  4168     logical, 
intent(in):: space_average(5)
  4169                         real(DP), 
intent(in):: weight1(:)
  4171     real(DP), 
intent(in):: weight2(:)
  4173     real(DP), 
intent(in):: weight3(:)
  4175     real(DP), 
intent(in):: weight4(:)
  4177     real(DP), 
intent(in):: weight5(:)
  4179     integer, 
pointer:: array_avr(:,:,:,:,:) 
  4181     integer, 
pointer:: array_avr_work(:,:,:,:,:)
  4183                         integer, 
pointer:: array_avr_work1(:,:,:,:,:)
  4185     integer, 
pointer:: array_avr_work2(:,:,:,:,:)
  4187     integer, 
pointer:: array_avr_work3(:,:,:,:,:)
  4189     integer, 
pointer:: array_avr_work4(:,:,:,:,:)
  4191     integer, 
pointer:: array_avr_work5(:,:,:,:,:)
  4194     integer:: array_shape(5)
  4195     integer:: i, dim_size
  4196     real(DP):: weight_sum
  4199     array_shape = shape( array )
  4200     array_avr_work => array
  4205     if ( space_average(1) ) 
then  4206       dim_size = array_shape(1)
  4208       allocate( array_avr_work1( array_shape(1) &
  4209                                   & , array_shape(2) &
  4211         & , array_shape(3) &
  4213         & , array_shape(4) &
  4215         & , array_shape(5) &
  4221         array_avr_work1(1,:,:,:,:) = array_avr_work1(1,:,:,:,:) + array_avr_work(i,:,:,:,:) * weight1(i)
  4222         weight_sum = weight_sum + weight1(i)
  4224       array_avr_work1 = array_avr_work1 / weight_sum
  4225       array_avr_work  => array_avr_work1
  4230     if ( space_average(2) ) 
then  4231       dim_size = array_shape(2)
  4233       allocate( array_avr_work2( array_shape(1) &
  4234                                   & , array_shape(2) &
  4236         & , array_shape(3) &
  4238         & , array_shape(4) &
  4240         & , array_shape(5) &
  4246         array_avr_work2(:,1,:,:,:) = array_avr_work2(:,1,:,:,:) + array_avr_work(:,i,:,:,:) * weight2(i)
  4247         weight_sum = weight_sum + weight2(i)
  4249       array_avr_work2 = array_avr_work2 / weight_sum
  4250       array_avr_work  => array_avr_work2
  4255     if ( space_average(3) ) 
then  4256       dim_size = array_shape(3)
  4258       allocate( array_avr_work3( array_shape(1) &
  4259                                   & , array_shape(2) &
  4261         & , array_shape(3) &
  4263         & , array_shape(4) &
  4265         & , array_shape(5) &
  4271         array_avr_work3(:,:,1,:,:) = array_avr_work3(:,:,1,:,:) + array_avr_work(:,:,i,:,:) * weight3(i)
  4272         weight_sum = weight_sum + weight3(i)
  4274       array_avr_work3 = array_avr_work3 / weight_sum
  4275       array_avr_work  => array_avr_work3
  4280     if ( space_average(4) ) 
then  4281       dim_size = array_shape(4)
  4283       allocate( array_avr_work4( array_shape(1) &
  4284                                   & , array_shape(2) &
  4286         & , array_shape(3) &
  4288         & , array_shape(4) &
  4290         & , array_shape(5) &
  4296         array_avr_work4(:,:,:,1,:) = array_avr_work4(:,:,:,1,:) + array_avr_work(:,:,:,i,:) * weight4(i)
  4297         weight_sum = weight_sum + weight4(i)
  4299       array_avr_work4 = array_avr_work4 / weight_sum
  4300       array_avr_work  => array_avr_work4
  4305     if ( space_average(5) ) 
then  4306       dim_size = array_shape(5)
  4308       allocate( array_avr_work5( array_shape(1) &
  4309                                   & , array_shape(2) &
  4311         & , array_shape(3) &
  4313         & , array_shape(4) &
  4315         & , array_shape(5) &
  4321         array_avr_work5(:,:,:,:,1) = array_avr_work5(:,:,:,:,1) + array_avr_work(:,:,:,:,i) * weight5(i)
  4322         weight_sum = weight_sum + weight5(i)
  4324       array_avr_work5 = array_avr_work5 / weight_sum
  4325       array_avr_work  => array_avr_work5
  4334       allocate( array_avr( array_shape(1) &
  4335                             & , array_shape(2) &
  4337         & , array_shape(3) &
  4339         & , array_shape(4) &
  4341         & , array_shape(5) &
  4345       array_avr = array_avr_work
  4347       nullify( array_avr_work )
  4349                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  4351       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  4353       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  4355       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  4357       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  4364     & array, space_average, &     ! (in)
  4387     integer, 
intent(in), 
target:: array(:,:,:,:,:,:)
  4388     logical, 
intent(in):: space_average(6)
  4389                         real(DP), 
intent(in):: weight1(:)
  4391     real(DP), 
intent(in):: weight2(:)
  4393     real(DP), 
intent(in):: weight3(:)
  4395     real(DP), 
intent(in):: weight4(:)
  4397     real(DP), 
intent(in):: weight5(:)
  4399     real(DP), 
intent(in):: weight6(:)
  4401     integer, 
pointer:: array_avr(:,:,:,:,:,:) 
  4403     integer, 
pointer:: array_avr_work(:,:,:,:,:,:)
  4405                         integer, 
pointer:: array_avr_work1(:,:,:,:,:,:)
  4407     integer, 
pointer:: array_avr_work2(:,:,:,:,:,:)
  4409     integer, 
pointer:: array_avr_work3(:,:,:,:,:,:)
  4411     integer, 
pointer:: array_avr_work4(:,:,:,:,:,:)
  4413     integer, 
pointer:: array_avr_work5(:,:,:,:,:,:)
  4415     integer, 
pointer:: array_avr_work6(:,:,:,:,:,:)
  4418     integer:: array_shape(6)
  4419     integer:: i, dim_size
  4420     real(DP):: weight_sum
  4423     array_shape = shape( array )
  4424     array_avr_work => array
  4429     if ( space_average(1) ) 
then  4430       dim_size = array_shape(1)
  4432       allocate( array_avr_work1( array_shape(1) &
  4433                                   & , array_shape(2) &
  4435         & , array_shape(3) &
  4437         & , array_shape(4) &
  4439         & , array_shape(5) &
  4441         & , array_shape(6) &
  4447         array_avr_work1(1,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:) * weight1(i)
  4448         weight_sum = weight_sum + weight1(i)
  4450       array_avr_work1 = array_avr_work1 / weight_sum
  4451       array_avr_work  => array_avr_work1
  4456     if ( space_average(2) ) 
then  4457       dim_size = array_shape(2)
  4459       allocate( array_avr_work2( array_shape(1) &
  4460                                   & , array_shape(2) &
  4462         & , array_shape(3) &
  4464         & , array_shape(4) &
  4466         & , array_shape(5) &
  4468         & , array_shape(6) &
  4474         array_avr_work2(:,1,:,:,:,:) = array_avr_work2(:,1,:,:,:,:) + array_avr_work(:,i,:,:,:,:) * weight2(i)
  4475         weight_sum = weight_sum + weight2(i)
  4477       array_avr_work2 = array_avr_work2 / weight_sum
  4478       array_avr_work  => array_avr_work2
  4483     if ( space_average(3) ) 
then  4484       dim_size = array_shape(3)
  4486       allocate( array_avr_work3( array_shape(1) &
  4487                                   & , array_shape(2) &
  4489         & , array_shape(3) &
  4491         & , array_shape(4) &
  4493         & , array_shape(5) &
  4495         & , array_shape(6) &
  4501         array_avr_work3(:,:,1,:,:,:) = array_avr_work3(:,:,1,:,:,:) + array_avr_work(:,:,i,:,:,:) * weight3(i)
  4502         weight_sum = weight_sum + weight3(i)
  4504       array_avr_work3 = array_avr_work3 / weight_sum
  4505       array_avr_work  => array_avr_work3
  4510     if ( space_average(4) ) 
then  4511       dim_size = array_shape(4)
  4513       allocate( array_avr_work4( array_shape(1) &
  4514                                   & , array_shape(2) &
  4516         & , array_shape(3) &
  4518         & , array_shape(4) &
  4520         & , array_shape(5) &
  4522         & , array_shape(6) &
  4528         array_avr_work4(:,:,:,1,:,:) = array_avr_work4(:,:,:,1,:,:) + array_avr_work(:,:,:,i,:,:) * weight4(i)
  4529         weight_sum = weight_sum + weight4(i)
  4531       array_avr_work4 = array_avr_work4 / weight_sum
  4532       array_avr_work  => array_avr_work4
  4537     if ( space_average(5) ) 
then  4538       dim_size = array_shape(5)
  4540       allocate( array_avr_work5( array_shape(1) &
  4541                                   & , array_shape(2) &
  4543         & , array_shape(3) &
  4545         & , array_shape(4) &
  4547         & , array_shape(5) &
  4549         & , array_shape(6) &
  4555         array_avr_work5(:,:,:,:,1,:) = array_avr_work5(:,:,:,:,1,:) + array_avr_work(:,:,:,:,i,:) * weight5(i)
  4556         weight_sum = weight_sum + weight5(i)
  4558       array_avr_work5 = array_avr_work5 / weight_sum
  4559       array_avr_work  => array_avr_work5
  4564     if ( space_average(6) ) 
then  4565       dim_size = array_shape(6)
  4567       allocate( array_avr_work6( array_shape(1) &
  4568                                   & , array_shape(2) &
  4570         & , array_shape(3) &
  4572         & , array_shape(4) &
  4574         & , array_shape(5) &
  4576         & , array_shape(6) &
  4582         array_avr_work6(:,:,:,:,:,1) = array_avr_work6(:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,i) * weight6(i)
  4583         weight_sum = weight_sum + weight6(i)
  4585       array_avr_work6 = array_avr_work6 / weight_sum
  4586       array_avr_work  => array_avr_work6
  4595       allocate( array_avr( array_shape(1) &
  4596                             & , array_shape(2) &
  4598         & , array_shape(3) &
  4600         & , array_shape(4) &
  4602         & , array_shape(5) &
  4604         & , array_shape(6) &
  4608       array_avr = array_avr_work
  4610       nullify( array_avr_work )
  4612                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  4614       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  4616       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  4618       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  4620       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  4622       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  4629     & array, space_average, &     ! (in)
  4654     integer, 
intent(in), 
target:: array(:,:,:,:,:,:,:)
  4655     logical, 
intent(in):: space_average(7)
  4656                         real(DP), 
intent(in):: weight1(:)
  4658     real(DP), 
intent(in):: weight2(:)
  4660     real(DP), 
intent(in):: weight3(:)
  4662     real(DP), 
intent(in):: weight4(:)
  4664     real(DP), 
intent(in):: weight5(:)
  4666     real(DP), 
intent(in):: weight6(:)
  4668     real(DP), 
intent(in):: weight7(:)
  4670     integer, 
pointer:: array_avr(:,:,:,:,:,:,:) 
  4672     integer, 
pointer:: array_avr_work(:,:,:,:,:,:,:)
  4674                         integer, 
pointer:: array_avr_work1(:,:,:,:,:,:,:)
  4676     integer, 
pointer:: array_avr_work2(:,:,:,:,:,:,:)
  4678     integer, 
pointer:: array_avr_work3(:,:,:,:,:,:,:)
  4680     integer, 
pointer:: array_avr_work4(:,:,:,:,:,:,:)
  4682     integer, 
pointer:: array_avr_work5(:,:,:,:,:,:,:)
  4684     integer, 
pointer:: array_avr_work6(:,:,:,:,:,:,:)
  4686     integer, 
pointer:: array_avr_work7(:,:,:,:,:,:,:)
  4689     integer:: array_shape(7)
  4690     integer:: i, dim_size
  4691     real(DP):: weight_sum
  4694     array_shape = shape( array )
  4695     array_avr_work => array
  4700     if ( space_average(1) ) 
then  4701       dim_size = array_shape(1)
  4703       allocate( array_avr_work1( array_shape(1) &
  4704                                   & , array_shape(2) &
  4706         & , array_shape(3) &
  4708         & , array_shape(4) &
  4710         & , array_shape(5) &
  4712         & , array_shape(6) &
  4714         & , array_shape(7) &
  4720         array_avr_work1(1,:,:,:,:,:,:) = array_avr_work1(1,:,:,:,:,:,:) + array_avr_work(i,:,:,:,:,:,:) * weight1(i)
  4721         weight_sum = weight_sum + weight1(i)
  4723       array_avr_work1 = array_avr_work1 / weight_sum
  4724       array_avr_work  => array_avr_work1
  4729     if ( space_average(2) ) 
then  4730       dim_size = array_shape(2)
  4732       allocate( array_avr_work2( array_shape(1) &
  4733                                   & , array_shape(2) &
  4735         & , array_shape(3) &
  4737         & , array_shape(4) &
  4739         & , array_shape(5) &
  4741         & , array_shape(6) &
  4743         & , array_shape(7) &
  4749         array_avr_work2(:,1,:,:,:,:,:) = array_avr_work2(:,1,:,:,:,:,:) + array_avr_work(:,i,:,:,:,:,:) * weight2(i)
  4750         weight_sum = weight_sum + weight2(i)
  4752       array_avr_work2 = array_avr_work2 / weight_sum
  4753       array_avr_work  => array_avr_work2
  4758     if ( space_average(3) ) 
then  4759       dim_size = array_shape(3)
  4761       allocate( array_avr_work3( array_shape(1) &
  4762                                   & , array_shape(2) &
  4764         & , array_shape(3) &
  4766         & , array_shape(4) &
  4768         & , array_shape(5) &
  4770         & , array_shape(6) &
  4772         & , array_shape(7) &
  4778         array_avr_work3(:,:,1,:,:,:,:) = array_avr_work3(:,:,1,:,:,:,:) + array_avr_work(:,:,i,:,:,:,:) * weight3(i)
  4779         weight_sum = weight_sum + weight3(i)
  4781       array_avr_work3 = array_avr_work3 / weight_sum
  4782       array_avr_work  => array_avr_work3
  4787     if ( space_average(4) ) 
then  4788       dim_size = array_shape(4)
  4790       allocate( array_avr_work4( array_shape(1) &
  4791                                   & , array_shape(2) &
  4793         & , array_shape(3) &
  4795         & , array_shape(4) &
  4797         & , array_shape(5) &
  4799         & , array_shape(6) &
  4801         & , array_shape(7) &
  4807         array_avr_work4(:,:,:,1,:,:,:) = array_avr_work4(:,:,:,1,:,:,:) + array_avr_work(:,:,:,i,:,:,:) * weight4(i)
  4808         weight_sum = weight_sum + weight4(i)
  4810       array_avr_work4 = array_avr_work4 / weight_sum
  4811       array_avr_work  => array_avr_work4
  4816     if ( space_average(5) ) 
then  4817       dim_size = array_shape(5)
  4819       allocate( array_avr_work5( array_shape(1) &
  4820                                   & , array_shape(2) &
  4822         & , array_shape(3) &
  4824         & , array_shape(4) &
  4826         & , array_shape(5) &
  4828         & , array_shape(6) &
  4830         & , array_shape(7) &
  4836         array_avr_work5(:,:,:,:,1,:,:) = array_avr_work5(:,:,:,:,1,:,:) + array_avr_work(:,:,:,:,i,:,:) * weight5(i)
  4837         weight_sum = weight_sum + weight5(i)
  4839       array_avr_work5 = array_avr_work5 / weight_sum
  4840       array_avr_work  => array_avr_work5
  4845     if ( space_average(6) ) 
then  4846       dim_size = array_shape(6)
  4848       allocate( array_avr_work6( array_shape(1) &
  4849                                   & , array_shape(2) &
  4851         & , array_shape(3) &
  4853         & , array_shape(4) &
  4855         & , array_shape(5) &
  4857         & , array_shape(6) &
  4859         & , array_shape(7) &
  4865         array_avr_work6(:,:,:,:,:,1,:) = array_avr_work6(:,:,:,:,:,1,:) + array_avr_work(:,:,:,:,:,i,:) * weight6(i)
  4866         weight_sum = weight_sum + weight6(i)
  4868       array_avr_work6 = array_avr_work6 / weight_sum
  4869       array_avr_work  => array_avr_work6
  4874     if ( space_average(7) ) 
then  4875       dim_size = array_shape(7)
  4877       allocate( array_avr_work7( array_shape(1) &
  4878                                   & , array_shape(2) &
  4880         & , array_shape(3) &
  4882         & , array_shape(4) &
  4884         & , array_shape(5) &
  4886         & , array_shape(6) &
  4888         & , array_shape(7) &
  4894         array_avr_work7(:,:,:,:,:,:,1) = array_avr_work7(:,:,:,:,:,:,1) + array_avr_work(:,:,:,:,:,:,i) * weight7(i)
  4895         weight_sum = weight_sum + weight7(i)
  4897       array_avr_work7 = array_avr_work7 / weight_sum
  4898       array_avr_work  => array_avr_work7
  4907       allocate( array_avr( array_shape(1) &
  4908                             & , array_shape(2) &
  4910         & , array_shape(3) &
  4912         & , array_shape(4) &
  4914         & , array_shape(5) &
  4916         & , array_shape(6) &
  4918         & , array_shape(7) &
  4922       array_avr = array_avr_work
  4924       nullify( array_avr_work )
  4926                           if ( 
associated( array_avr_work1 ) ) 
deallocate( array_avr_work1 )
  4928       if ( 
associated( array_avr_work2 ) ) 
deallocate( array_avr_work2 )
  4930       if ( 
associated( array_avr_work3 ) ) 
deallocate( array_avr_work3 )
  4932       if ( 
associated( array_avr_work4 ) ) 
deallocate( array_avr_work4 )
  4934       if ( 
associated( array_avr_work5 ) ) 
deallocate( array_avr_work5 )
  4936       if ( 
associated( array_avr_work6 ) ) 
deallocate( array_avr_work6 )
  4938       if ( 
associated( array_avr_work7 ) ) 
deallocate( array_avr_work7 )
 
character(string), save, public time_unit_suffix
 
character(string), save, public institution_save
 
integer, parameter, public save_tstepnum
 
logical, save, public all_output_save
 
type(slice_info), dimension(1:max_vars), target, save, public slice_vars
 
subroutine averagereducedouble5(array, space_average, weight1, weight2, weight3, weight4, weight5, array_avr)
 
subroutine averagereduceint6(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, array_avr)
 
logical, save, public initialized
 
real(dp), dimension(1:max_vars), save, public newfile_inttime_vars
 
logical, dimension(1:max_vars, 1:save_tstepnum), save, public renew_timing_vars
 
character(string), save, public conventions_save
 
integer, save, public numvars
 
real(dp), dimension(1:max_vars), save, public interval_time_vars
 
logical, save, public flag_allvarfixed
 
subroutine averagereducereal1(array, space_average, weight1, array_avr)
 
integer, parameter, public max_dims_depended_by_var
 
type(space_avr_info), dimension(1:max_vars), target, save, public space_avr_vars
 
character(*), parameter, public wgtsuf
 
real(dp), dimension(1:max_vars), save, public terminus_time_vars
 
logical, dimension(1:max_vars, 1:save_tstepnum), save, public output_timing_vars
 
type(gt_history_axis_data), dimension(1:nf90_max_dims), target, save, public data_weights
 
character(string), save, public title_save
 
real(dp), parameter, public max_remainder_range
 
logical, dimension(1:max_vars, 1:save_tstepnum), save, public output_timing_avr_vars
 
subroutine averagereduceint7(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, weight7, array_avr)
 
integer, parameter, public hst_empinoaxisdata
 
integer, save, public checked_tstepnum
 
character(string), save, public source_save
 
real(dp), dimension(1:save_tstepnum), save, public saved_time
 
type(gt_history_varinfo), dimension(1:max_vars), save, public gthst_vars
 
subroutine, public storeerror(number, where, err, cause_c, cause_i)
 
type(gt_history_axis_data), dimension(1:nf90_max_dims), target, save, public data_axes_whole
 
integer, parameter, public dc_noerr
 
character(token), save, public gt_version_save
 
subroutine averagereducereal3(array, space_average, weight1, weight2, weight3, array_avr)
 
type(gt_history_varinfo), dimension(1:nf90_max_dims), save, public gthst_weights
 
subroutine dcdifftimeputline(diff, unit, indent)
 
integer, parameter, public hst_ebadvarname
 
logical, dimension(1:max_vars), save, public flag_output_prev_vars
 
character(string) function, public joinchar(carray, expr)
 
subroutine averagereduceint4(array, space_average, weight1, weight2, weight3, weight4, array_avr)
 
subroutine averagereduceint2(array, space_average, weight1, weight2, array_avr)
 
subroutine averagereducedouble6(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, array_avr)
 
logical, save, public save_mpi_split
 
type(gt_history_axis_data), dimension(1:nf90_max_dims), target, save, public data_axes
 
real(dp), dimension(1:max_vars), save, public origin_time_vars
 
subroutine historyclose(history, quiet, err)
 
integer, parameter, public hst_ebadslice
 
type(gt_history_axis), dimension(1:nf90_max_dims), target, save, public gthst_axes
 
subroutine averagereduceint3(array, space_average, weight1, weight2, weight3, array_avr)
 
logical, dimension(1:max_vars, 1:save_tstepnum), save, public create_timing_vars
 
integer, parameter, public dp
倍精度実数型変数 
 
subroutine averagereducereal6(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, array_avr)
 
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
 
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
 
integer, dimension(1:max_vars), save, public interval_unitsym_vars
 
integer, save, public checked_tstep_varnum
 
subroutine averagereduceint1(array, space_average, weight1, array_avr)
 
subroutine averagereducereal2(array, space_average, weight1, weight2, array_avr)
 
character(token), dimension(1:max_vars), save, public varname_vars
 
subroutine averagereducereal7(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, weight7, array_avr)
 
real(dp), dimension(1:max_vars), save, public prev_outtime_vars
 
logical, dimension(1:max_vars), save, public histaddvar_vars
 
real(dp), save, public zero_time
 
character(token), save, public time_unit_bycreate
 
integer, save, public numdims
 
integer, parameter, public max_vars
 
subroutine averagereducedouble3(array, space_average, weight1, weight2, weight3, array_avr)
 
integer, save, public numwgts
 
subroutine averagereducedouble7(array, space_average, weight1, weight2, weight3, weight4, weight5, weight6, weight7, array_avr)
 
integer, save, public saved_tstep
 
subroutine averagereducereal5(array, space_average, weight1, weight2, weight3, weight4, weight5, array_avr)
 
subroutine averagereducedouble2(array, space_average, weight1, weight2, array_avr)
 
subroutine averagereducereal4(array, space_average, weight1, weight2, weight3, weight4, array_avr)
 
logical, save, public save_mpi_gather
 
type(gthst_nmlinfo), save, public gthstnml
 
character(token), save, public rank_save
 
subroutine averagereduceint5(array, space_average, weight1, weight2, weight3, weight4, weight5, array_avr)
 
subroutine averagereducedouble1(array, space_average, weight1, array_avr)
 
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
 
logical, dimension(1:max_vars), save, public tavr_vars
 
type(dc_cal), save, public cal_save
 
character(*), parameter, public sub_sname
 
subroutine averagereducedouble4(array, space_average, weight1, weight2, weight3, weight4, array_avr)
 
type(axes_weight), dimension(1:max_vars), target, save, public weight_vars
 
logical, dimension(1:max_vars), save, public output_valid_vars
 
type(gt_history_multi), dimension(1:max_vars), save, public gthst_history_vars
 
real(dp), dimension(1:max_vars), save, public newfile_createtime_vars
 
logical, dimension(1:max_vars, 1:save_tstepnum), save, public close_timing_vars
 
character(*), parameter, public version