/[lmdze]/trunk/Sources/misc/writefield.f
ViewVC logotype

Diff of /trunk/Sources/misc/writefield.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/bibio/Writefield/writefield.f revision 108 by guez, Tue Sep 16 14:00:41 2014 UTC trunk/bibio/writefield.f revision 113 by guez, Thu Sep 18 19:56:46 2014 UTC
# Line 1  Line 1 
1  module WriteField_m  module WriteField_m
2    
3    use writefield_gen_m, only: writefield_gen    use CreateNewField_m, only: CreateNewField, ncid, nbfield, MaxWriteField
4      use GetFieldIndex_m, only: GetFieldIndex
5      USE netcdf95, ONLY: nf95_put_var
6    
7    implicit none    implicit none
8    
9      integer, save:: Record(MaxWriteField)
10    
11    interface WriteField    interface WriteField
12       module procedure WriteField3d,WriteField2d,WriteField1d       module procedure WriteField3d,WriteField2d,WriteField1d
13    end interface WriteField    end interface WriteField
# Line 14  module WriteField_m Line 18  module WriteField_m
18  contains  contains
19    
20    subroutine WriteField1d(name,Field)    subroutine WriteField1d(name,Field)
     character(len=*) :: name  
     real, dimension(:) :: Field  
     integer, dimension(1) :: Dim  
21    
22      Dim=shape(Field)      character(len=*), intent(in):: name
23      call WriteField_gen(name,Field,Dim(1),1,1)      real, intent(in):: Field(:)
24    
25        ! Local:
26        integer index
27    
28        !-------------------------------------------
29    
30        Index=GetFieldIndex(name)
31    
32        if (Index==-1) then
33           call CreateNewField(name, shape(field))
34           Index=nbfield
35           Record(Index) = 1
36        else
37           Record(Index)=Record(Index)+1
38        endif
39    
40        call NF95_PUT_VAR(Ncid(Index), Varid = 1, values = Field, &
41             start = (/1, Record(Index)/))
42    
43    end subroutine WriteField1d    end subroutine WriteField1d
44    
45    !****************************************************************    !****************************************************************
46    
47    subroutine WriteField2d(name,Field)    subroutine WriteField2d(name,Field)
     character(len=*) :: name  
     real, dimension(:,:) :: Field  
     integer, dimension(2) :: Dim  
48    
49      Dim=shape(Field)      use netcdf, only: nf90_sync
50      call WriteField_gen(name,Field,Dim(1),Dim(2),1)  
51        character(len=*), intent(in):: name
52        real, intent(in):: Field(:, :)
53    
54        ! Local:
55        integer index, status
56    
57        !-------------------------------------------
58    
59        Index=GetFieldIndex(name)
60    
61        if (Index==-1) then
62           call CreateNewField(name, shape(field))
63           Index=nbfield
64           Record(Index) = 1
65        else
66           Record(Index)=Record(Index)+1
67        endif
68    
69        call NF95_PUT_VAR(Ncid(Index), Varid = 1, values = Field, &
70             start = (/1, 1, Record(Index)/))
71        status = nf90_sync(Ncid(Index))
72    
73    end subroutine WriteField2d    end subroutine WriteField2d
74    
75    !****************************************************************    !****************************************************************
76    
77    subroutine WriteField3d(name,Field)    subroutine WriteField3d(name,Field)
     character(len=*) :: name  
     real, dimension(:,:,:) :: Field  
     integer, dimension(3) :: Dim  
78    
79      Dim=shape(Field)      character(len=*), intent(in):: name
80      call WriteField_gen(name,Field,Dim(1),Dim(2),Dim(3))      real, intent(in):: Field(:, :, :)
81    
82        ! Local:
83        integer index
84    
85        !-------------------------------------------
86    
87        Index=GetFieldIndex(name)
88    
89        if (Index==-1) then
90           call CreateNewField(name, shape(field))
91           Index=nbfield
92           Record(Index) = 1
93        else
94           Record(Index)=Record(Index)+1
95        endif
96    
97        call NF95_PUT_VAR(Ncid(Index), Varid = 1, values = Field, &
98             start = (/1, 1, 1, Record(Index)/))
99    
100    end subroutine WriteField3d    end subroutine WriteField3d
101    

Legend:
Removed from v.108  
changed lines
  Added in v.113

  ViewVC Help
Powered by ViewVC 1.1.21