Loading...
Searching...
No Matches
gtvargetsliceall.f90
Go to the documentation of this file.
1!
2!= 変数入出力範囲限定情報を取得 (全ての次元の情報を一括取得)
3!
4! Authors:: Eizi TOYODA, Yasuhiro MORIKAWA
5! Version:: $Id: gtvargetsliceall.f90,v 1.1 2009-03-20 09:09:51 morikawa Exp $
6! Tag Name:: $Name: $
7! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
8! License:: See COPYRIGHT[link:../../COPYRIGHT]
9!
10! 以下のサブルーチン、関数は gtdata_generic から gtdata_generic#Get_Slice
11! として提供されます。
12
13! Copyright (C) GFD Dennou Club, 2000. All rights reserved.
14
15subroutine gtvargetsliceall(var, start, count, stride)
16 !
17 !== 変数入出力範囲限定情報を取得 (全ての次元の情報を一括取得)
18 !
19 ! 変数 *var* に関して、
20 ! Slice によって設定された入出力範囲の情報を取得します。
21 ! 全次元の入出力範囲について一括取得するため、
22 ! あらかじめ Inquire(var, alldims) して次元の数を確保
23 ! しなければなりません。
24 !
25 ! *start*, *count*, *stride* に関しては Slice を参照してください。
26 !
27 ! *Get_Slice* は 2 つのサブルーチンの総称名であり、
28 ! 他にもある1つの次元に関して情報を取得する
29 ! 方法もあります。下記のサブルーチンを参照ください。
30 !
31 use gtdata_types, only: gt_variable
32 use gtdata_generic, only: gtvargetslice
33 implicit none
34 type(gt_variable), intent(in):: var
35 integer, intent(out), optional:: start(:), count(:), stride(:)
36 integer:: nd, i
37 logical:: all
38 nd = huge(1)
39 all = present(start) .and. present(count) .and. present(stride)
40 if (present(start)) nd = min(nd, size(start))
41 if (present(count)) nd = min(nd, size(count))
42 if (present(stride)) nd = min(nd, size(stride))
43 do, i = 1, nd
44 if (all) then
45 call gtvargetslice(var, i, start(i), count(i), stride(i))
46 cycle
47 endif
48 if (present(start)) call gtvargetslice(var, i, start=start(i))
49 if (present(count)) call gtvargetslice(var, i, count=count(i))
50 if (present(stride)) call gtvargetslice(var, i, stride=stride(i))
51 enddo
52end subroutine gtvargetsliceall
53
subroutine gtvargetslice(var, dimord, start, count, stride, count_compact)
subroutine gtvargetsliceall(var, start, count, stride)