Changeset 5246 for LMDZ6/trunk/libf/dyn3d/wrgrads.F90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d/wrgrads.F90
r5245 r5246 2 2 ! $Header$ 3 3 ! 4 5 4 subroutine wrgrads(if,nl,field,name,titlevar) 5 implicit none 6 6 7 cDeclarations8 cif indice du fichier9 cnl nombre de couches10 cfield champ11 cname petit nom12 ctitlevar Titre7 ! Declarations 8 ! if indice du fichier 9 ! nl nombre de couches 10 ! field champ 11 ! name petit nom 12 ! titlevar Titre 13 13 14 14 #include "gradsdef.h" 15 15 16 carguments17 integerif,nl18 realfield(imx*jmx*lmx)16 ! arguments 17 integer :: if,nl 18 real :: field(imx*jmx*lmx) 19 19 20 21 20 integer, parameter:: wp = selected_real_kind(p=6, r=36) 21 real(wp) field4(imx*jmx*lmx) 22 22 23 character*10name,file24 character*10titlevar23 character(len=10) :: name,file 24 character(len=10) :: titlevar 25 25 26 clocal26 ! local 27 27 28 integerim,jm,lm,i,j,l,iv,iii,iji,iif,ijf28 integer :: im,jm,lm,i,j,l,iv,iii,iji,iif,ijf 29 29 30 logicalwritectl30 logical :: writectl 31 31 32 32 33 33 writectl=.false. 34 34 35 cprint*,if,iid(if),jid(if),ifd(if),jfd(if)36 37 38 39 40 41 42 35 ! print*,if,iid(if),jid(if),ifd(if),jfd(if) 36 iii=iid(if) 37 iji=jid(if) 38 iif=ifd(if) 39 ijf=jfd(if) 40 im=iif-iii+1 41 jm=ijf-iji+1 42 lm=lmd(if) 43 43 44 cprint*,'im,jm,lm,name,firsttime(if)'45 cprint*,im,jm,lm,name,firsttime(if)44 ! print*,'im,jm,lm,name,firsttime(if)' 45 ! print*,im,jm,lm,name,firsttime(if) 46 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 cprint*,'initialisation ecriture de ',var(ivar(if),if)64 cprint*,'if ivar(if) nld ',if,ivar(if),nld(ivar(if),if)65 66 67 68 69 70 71 72 73 47 if(firsttime(if)) then 48 if(name.eq.var(1,if)) then 49 firsttime(if)=.false. 50 ivar(if)=1 51 print*,'fin de l initialiation de l ecriture du fichier' 52 print*,file 53 print*,'fichier no: ',if 54 print*,'unit ',unit(if) 55 print*,'nvar ',nvar(if) 56 print*,'vars ',(var(iv,if),iv=1,nvar(if)) 57 else 58 ivar(if)=ivar(if)+1 59 nvar(if)=ivar(if) 60 var(ivar(if),if)=name 61 tvar(ivar(if),if)=trim(titlevar) 62 nld(ivar(if),if)=nl 63 ! print*,'initialisation ecriture de ',var(ivar(if),if) 64 ! print*,'if ivar(if) nld ',if,ivar(if),nld(ivar(if),if) 65 endif 66 writectl=.true. 67 itime(if)=1 68 else 69 ivar(if)=mod(ivar(if),nvar(if))+1 70 if (ivar(if).eq.nvar(if)) then 71 writectl=.true. 72 itime(if)=itime(if)+1 73 endif 74 74 75 76 77 78 79 80 81 82 83 84 75 if(var(ivar(if),if).ne.name) then 76 print*,'Il faut stoker la meme succession de champs a chaque' 77 print*,'pas de temps' 78 print*,'fichier no: ',if 79 print*,'unit ',unit(if) 80 print*,'nvar ',nvar(if) 81 print*,'vars ',(var(iv,if),iv=1,nvar(if)) 82 CALL abort_gcm("wrgrads","problem",1) 83 endif 84 endif 85 85 86 cprint*,'ivar(if),nvar(if),var(ivar(if),if),writectl'87 cprint*,ivar(if),nvar(if),var(ivar(if),if),writectl88 89 90 91 cprint*,'Ecrit rec=',irec(if),iii,iif,iji,ijf,92 cs (l-1)*imd(if)*jmd(if)+(iji-1)*imd(if)+iii93 cs ,(l-1)*imd(if)*jmd(if)+(ijf-1)*imd(if)+iif94 write(unit(if)+1,rec=irec(if))95 s ((field4((l-1)*imd(if)*jmd(if)+(j-1)*imd(if)+i)96 s,i=iii,iif),j=iji,ijf)97 98 86 ! print*,'ivar(if),nvar(if),var(ivar(if),if),writectl' 87 ! print*,ivar(if),nvar(if),var(ivar(if),if),writectl 88 field4(1:imd(if)*jmd(if)*nl)=field(1:imd(if)*jmd(if)*nl) 89 do l=1,nl 90 irec(if)=irec(if)+1 91 ! print*,'Ecrit rec=',irec(if),iii,iif,iji,ijf, 92 ! s (l-1)*imd(if)*jmd(if)+(iji-1)*imd(if)+iii 93 ! s ,(l-1)*imd(if)*jmd(if)+(ijf-1)*imd(if)+iif 94 write(unit(if)+1,rec=irec(if)) & 95 ((field4((l-1)*imd(if)*jmd(if)+(j-1)*imd(if)+i) & 96 ,i=iii,iif),j=iji,ijf) 97 enddo 98 if (writectl) then 99 99 100 101 cWARNING! on reecrase le fichier .ctl a chaque ecriture102 open(unit(if),file=trim(file)//'.ctl'103 &,form='formatted',status='unknown')104 write(unit(if),'(a5,1x,a40)')105 &'DSET ','^'//trim(file)//'.dat'100 file=fichier(if) 101 ! WARNING! on reecrase le fichier .ctl a chaque ecriture 102 open(unit(if),file=trim(file)//'.ctl' & 103 ,form='formatted',status='unknown') 104 write(unit(if),'(a5,1x,a40)') & 105 'DSET ','^'//trim(file)//'.dat' 106 106 107 108 109 110 111 112 write(unit(if),'(a4,i10,a30)')113 &'TDEF ',itime(if),' LINEAR 02JAN1987 1MO '114 115 116 cprint*,'if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)'117 cprint*,if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)118 write(unit(if),1000) var(iv,if),nld(iv,if)-1/nld(iv,if)119 &,99,tvar(iv,if)120 121 122 c 123 1000 format(a5,3x,i4,i3,1x,a39)107 write(unit(if),'(a12)') 'UNDEF 1.0E30' 108 write(unit(if),'(a5,1x,a40)') 'TITLE ',title(if) 109 call formcoord(unit(if),im,xd(iii,if),1.,.false.,'XDEF') 110 call formcoord(unit(if),jm,yd(iji,if),1.,.true.,'YDEF') 111 call formcoord(unit(if),lm,zd(1,if),1.,.false.,'ZDEF') 112 write(unit(if),'(a4,i10,a30)') & 113 'TDEF ',itime(if),' LINEAR 02JAN1987 1MO ' 114 write(unit(if),'(a4,2x,i5)') 'VARS',nvar(if) 115 do iv=1,nvar(if) 116 ! print*,'if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)' 117 ! print*,if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if) 118 write(unit(if),1000) var(iv,if),nld(iv,if)-1/nld(iv,if) & 119 ,99,tvar(iv,if) 120 enddo 121 write(unit(if),'(a7)') 'ENDVARS' 122 ! 123 1000 format(a5,3x,i4,i3,1x,a39) 124 124 125 125 close(unit(if)) 126 126 127 127 endif ! writectl 128 128 129 129 return 130 130 131 END 131 END SUBROUTINE wrgrads 132 132
Note: See TracChangeset
for help on using the changeset viewer.