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