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 )