Changeset 13 for trunk/ToBeReviewed/GRILLE/f2v.pro
- Timestamp:
- 04/28/06 14:18:03 (18 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/ToBeReviewed/GRILLE/f2v.pro
r12 r13 38 38 ;------------------------------------------------------------ 39 39 FUNCTION f2v, temp 40 @common 40 ;--------------------------------------------------------- 41 @cm_4mesh 42 @cm_4data 43 @cm_4cal 44 IF NOT keyword_set(key_forgetold) THEN BEGIN 45 @updatenew 46 ENDIF 47 ;--------------------------------------------------------- 41 48 res = temp 42 49 ;on force nxt=nxf, etc ... 43 premierxv = premierxf44 dernierxv = dernierxf45 premieryv = premieryf46 dernieryv = dernieryf50 firstxv = firstxf 51 lastxv = lastxf 52 firstyv = firstyf 53 lastyv = lastyf 47 54 nxv = nxf 48 55 nyv = nyf 49 56 vargrid = 'V' 50 57 if NOT keyword_set(valmask) then valmask = 1e20 51 lon1 = glamv[ premierxv, 0]52 lon2 = glamf[ dernierxf, 0]58 lon1 = glamv[firstxv, 0] 59 lon2 = glamf[lastxf, 0] 53 60 54 61 ; cas sur la taille du tableau et application … … 60 67 taille[1] eq nxf and taille[2] eq nyf: 61 68 taille[1] eq jpi and taille[2] eq jpj: $ 62 res=res[ premierxf:dernierxf, premieryf:dernieryf]69 res=res[firstxf:lastxf, firstyf:lastyf] 63 70 else: $ 64 71 return, report('Probleme d''adequation entre les tailles du domaine et de la boite.') 65 72 endcase 66 mask = (fmask())[ premierxf:dernierxf, premieryf:dernieryf, 0]73 mask = (fmask())[firstxf:lastxf, firstyf:lastyf, 0] 67 74 terre = where(mask EQ 0) 68 75 IF terre[0] NE -1 THEN res[terre] = !values.f_nan 69 76 res = 0.5*(res + shift(res, 1, 0)) 70 if NOT (keyword_set(key_periodi que) AND nxf EQ jpi) then res[0, *] = !values.f_nan71 mask = (vmask())[ premierxf:dernierxf, premieryf:dernieryf, 0]77 if NOT (keyword_set(key_periodic) AND nxf EQ jpi) then res[0, *] = !values.f_nan 78 mask = (vmask())[firstxf:lastxf, firstyf:lastyf, 0] 72 79 terre = where(mask EQ 0) 73 80 IF terre[0] NE -1 THEN res[terre] = valmask … … 77 84 taille[1] eq nxf and taille[2] eq nyf AND taille[3] EQ nzt: 78 85 taille[1] eq nxf and taille[2] eq nyf AND taille[3] EQ jpk: $ 79 res=res[*, *, premierzt:dernierzt]86 res=res[*, *, firstzt:lastzt] 80 87 taille[1] eq nxf and taille[2] eq nyf AND taille[3] EQ jpt: 81 88 taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $ 82 res=res[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt]89 res=res[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt] 83 90 taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $ 84 res=res[ premierxf:dernierxf, premieryf:dernieryf, *]91 res=res[firstxf:lastxf, firstyf:lastyf, *] 85 92 else: $ 86 93 return, report('Probleme d''adequation entre les tailles du domaine et de la boite.') 87 94 ENDCASE 88 95 if taille[3] EQ jpt then begin 89 mask = (fmask())[ premierxf:dernierxf, premieryf:dernieryf, dernierzt*(nzt NE jpk)]96 mask = (fmask())[firstxf:lastxf, firstyf:lastyf, lastzt*(nzt NE jpk)] 90 97 mask = temporary(mask[*])#replicate(1, jpt) 91 98 mask = reform(mask, nxf, nyf, jpt, /over) 92 ENDIF ELSE mask = (fmask())[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt]99 ENDIF ELSE mask = (fmask())[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt] 93 100 terre = where(temporary(mask) EQ 0) 94 101 IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan 95 102 res = 0.5*(res + shift(res, 1, 0, 0)) 96 if NOT (keyword_set(key_periodi que) AND nxf EQ jpi) then res[0, *, *] = !values.f_nan103 if NOT (keyword_set(key_periodic) AND nxf EQ jpi) then res[0, *, *] = !values.f_nan 97 104 if taille[3] EQ jpt then BEGIN 98 mask = tmask[ premierxf:dernierxf, premieryf:dernieryf, dernierzt*(nzt NE jpk)]105 mask = tmask[firstxf:lastxf, firstyf:lastyf, lastzt*(nzt NE jpk)] 99 106 mask = temporary(mask[*])#replicate(1, jpt) 100 107 mask = reform(mask, nxf, nyf, jpt, /over) 101 ENDIF ELSE mask = (vmask())[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt]108 ENDIF ELSE mask = (vmask())[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt] 102 109 terre = where(temporary(mask) EQ 0) 103 110 IF terre[0] NE -1 THEN res[temporary(terre)] = valmask … … 107 114 taille[1] eq nxf and taille[2] eq nyf AND taille[3] EQ nzt AND taille[4] EQ jpt: 108 115 taille[1] eq nxf and taille[2] eq nyf AND taille[3] EQ jpk AND taille[4] EQ jpt: $ 109 res=res[*, *, premierzt:dernierzt, *]116 res=res[*, *, firstzt:lastzt, *] 110 117 taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk AND taille[4] EQ jpt: $ 111 res=res[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt, *]118 res=res[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt, *] 112 119 else: $ 113 120 return, report('Probleme d''adequation entre les tailles du domaine et de la boite.') 114 121 ENDCASE 115 mask = (fmask())[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt]122 mask = (fmask())[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt] 116 123 mask = temporary(mask[*])#replicate(1, jpt) 117 124 mask = reform(mask, nxf, nyf, nzt, jpt, /over) … … 119 126 IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan 120 127 res = 0.5*(res + shift(res, 1, 0, 0, 0)) 121 if NOT (keyword_set(key_periodi que) AND nxf EQ jpi) then res[0, *, *, *] = !values.f_nan122 mask = (vmask())[ premierxf:dernierxf, premieryf:dernieryf, premierzt:dernierzt]128 if NOT (keyword_set(key_periodic) AND nxf EQ jpi) then res[0, *, *, *] = !values.f_nan 129 mask = (vmask())[firstxf:lastxf, firstyf:lastyf, firstzt:lastzt] 123 130 mask = temporary(mask[*])#replicate(1, jpt) 124 131 mask = reform(mask, nxf, nyf, nzt, jpt, /over) … … 128 135 endcase 129 136 137 IF NOT keyword_set(key_forgetold) THEN BEGIN 138 @updateold 139 ENDIF 140 130 141 return, res 131 142 END
Note: See TracChangeset
for help on using the changeset viewer.