Changeset 13 for trunk/ToBeReviewed/GRILLE/u2t.pro
- Timestamp:
- 04/28/06 14:18:03 (18 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/ToBeReviewed/GRILLE/u2t.pro
r12 r13 38 38 ;------------------------------------------------------------ 39 39 FUNCTION u2t, 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=nxu, etc ... 43 premierxt = premierxu44 dernierxt = dernierxu45 premieryt = premieryu46 dernieryt = dernieryu50 firstxt = firstxu 51 lastxt = lastxu 52 firstyt = firstyu 53 lastyt = lastyu 47 54 nxt = nxu 48 55 nyt = nyu 49 56 vargrid = 'T' 50 57 if NOT keyword_set(valmask) then valmask = 1e20 51 lon1 = glamt[ premierxt, 0]52 lon2 = glamu[ dernierxu, 0]58 lon1 = glamt[firstxt, 0] 59 lon2 = glamu[lastxu, 0] 53 60 ; 54 61 ; cas sur la taille du tableau et application … … 60 67 taille[1] eq nxu and taille[2] eq nyu: 61 68 taille[1] eq jpi and taille[2] eq jpj: $ 62 res=res[ premierxu:dernierxu, premieryu:dernieryu]69 res=res[firstxu:lastxu, firstyu:lastyu] 63 70 else: $ 64 71 return, report('Probleme d''adequation entre les tailles du domaine et de la boite.') 65 72 endcase 66 mask = (umask())[ premierxu:dernierxu, premieryu:dernieryu, 0]73 mask = (umask())[firstxu:lastxu, firstyu:lastyu, 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 nxu EQ jpi) then res[0, *] = !values.f_nan71 mask = tmask[ premierxu:dernierxu, premieryu:dernieryu, 0]77 if NOT (keyword_set(key_periodic) AND nxu EQ jpi) then res[0, *] = !values.f_nan 78 mask = tmask[firstxu:lastxu, firstyu:lastyu, 0] 72 79 terre = where(mask EQ 0) 73 80 IF terre[0] NE -1 THEN res[terre] = valmask … … 77 84 taille[1] eq nxu and taille[2] eq nyu AND taille[3] EQ nzt: 78 85 taille[1] eq nxu and taille[2] eq nyu AND taille[3] EQ jpk: $ 79 res=res[*, *, premierzt:dernierzt]86 res=res[*, *, firstzt:lastzt] 80 87 taille[1] eq nxu and taille[2] eq nyu AND taille[3] EQ jpt: 81 88 taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $ 82 res=res[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt]89 res=res[firstxu:lastxu, firstyu:lastyu, firstzt:lastzt] 83 90 taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $ 84 res=res[ premierxu:dernierxu, premieryu:dernieryu, *]91 res=res[firstxu:lastxu, firstyu:lastyu, *] 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 = (umask())[ premierxu:dernierxu, premieryu:dernieryu, dernierzt*(nzt NE jpk)]96 mask = (umask())[firstxu:lastxu, firstyu:lastyu, lastzt*(nzt NE jpk)] 90 97 mask = temporary(mask[*])#replicate(1, jpt) 91 98 mask = reform(mask, nxu, nyu, jpt, /over) 92 ENDIF ELSE mask = (umask())[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt]99 ENDIF ELSE mask = (umask())[firstxu:lastxu, firstyu:lastyu, 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 nxu EQ jpi) then res[0, *, *] = !values.f_nan103 if NOT (keyword_set(key_periodic) AND nxu EQ jpi) then res[0, *, *] = !values.f_nan 97 104 if taille[3] EQ jpt then BEGIN 98 mask = tmask[ premierxu:dernierxu, premieryu:dernieryu, dernierzt*(nzt NE jpk)]105 mask = tmask[firstxu:lastxu, firstyu:lastyu, lastzt*(nzt NE jpk)] 99 106 mask = temporary(mask[*])#replicate(1, jpt) 100 107 mask = reform(mask, nxu, nyu, jpt, /over) 101 ENDIF ELSE mask = tmask[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt]108 ENDIF ELSE mask = tmask[firstxu:lastxu, firstyu:lastyu, 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 nxu and taille[2] eq nyu AND taille[3] EQ nzt AND taille[4] EQ jpt: 108 115 taille[1] eq nxu and taille[2] eq nyu 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[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt, *]118 res=res[firstxu:lastxu, firstyu:lastyu, 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 = (umask())[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt]122 mask = (umask())[firstxu:lastxu, firstyu:lastyu, firstzt:lastzt] 116 123 mask = temporary(mask[*])#replicate(1, jpt) 117 124 mask = reform(mask, nxu, nyu, 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 nxu EQ jpi) then res[0, *, *, *] = !values.f_nan122 mask = tmask[ premierxu:dernierxu, premieryu:dernieryu, premierzt:dernierzt]128 if NOT (keyword_set(key_periodic) AND nxu EQ jpi) then res[0, *, *, *] = !values.f_nan 129 mask = tmask[firstxu:lastxu, firstyu:lastyu, firstzt:lastzt] 123 130 mask = temporary(mask[*])#replicate(1, jpt) 124 131 mask = reform(mask, nxu, nyu, 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.