;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:fitintobox ; ; PURPOSE:verifie qu''un tableau correspond bien au domaine 4d ; specifie lors du dernier domdef et pat jpt. ; ; CATEGORY:pour les debuts de noumbreux programme (blindage) ; ; CALLING SEQUENCE:res=fitintobox(field) ; ; INPUTS:field un tableau ou une structure verifiant les ; caracteristiques speficfies ds litchamp.pro ; ; KEYWORD PARAMETERS: ; ; OUTPUTS:un tableau a la taille du domaine 4d. ; ; COMMON BLOCKS:common.pro ; ; SIDE EFFECTS: ; ; RESTRICTIONS:utilise pour se reperer dans l''espace les variables ; globales jpi,jpj,jpk,premier...,dernier...,nx...,ny...,nz,... ; pour differencier un tableau 3d xyz d''un tableau 3d xyt, on utilise ; jpt qui doit etre egale a 1 ds le cas xyz et different de 1 dans ; l''autre cas. ; ; EXAMPLE: ; ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) ; 10 juin 2000. ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ FUNCTION fitintobox, field @common ;--------------------- array = litchamp(field) grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery,premierz,dernierx, derniery, dernierz ;--------------------- taille=size(array) case 1 of ;---------------------------------------------------------------------------- ;xy ;---------------------------------------------------------------------------- taille[0] EQ 2:BEGIN case 1 of taille[1] eq nx and taille[2] eq ny: taille[1] eq jpi and taille[2] eq jpj:array=array[premierx:dernierx, premiery:derniery] else:return, report('Probleme d''adequation entre les tailles !C du domaine nx*ny '+strtrim(nx, 1)+'*'+strtrim(ny, 1)+' !C et du tableau '+strtrim(taille[1], 1)+'*'+strtrim(taille[2], 1)) endcase END ;---------------------------------------------------------------------------- ;xyz ;---------------------------------------------------------------------------- taille[0] EQ 3 AND jpt EQ 1:BEGIN case 1 of taille[1] eq nx and taille[2] eq ny and taille[3] eq nz: taille[1] eq nx and taille[2] eq ny and taille[3] eq jpk: $ array=array[*, *, premierz:dernierz] taille[1] eq jpi and taille[2] eq jpj and taille[3] eq jpk: $ array=array[premierx:dernierx, premiery:derniery, premierz:dernierz] taille[1] eq nx and taille[2] eq ny and taille[3] eq jpk: $ array=array[premierx:dernierx, premiery:derniery, *] else:return, report('Probleme d''adequation entre les tailles !C du domaine nx*ny*nz '+strtrim(nx, 1)+'*'+strtrim(ny, 1)+'*'+strtrim(nz, 1)+' !C et du tableau '+strtrim(taille[1], 1)+'*'+strtrim(taille[2], 1)+'*'+strtrim(taille[3], 1)) endcase END ;---------------------------------------------------------------------------- ;xyt ;---------------------------------------------------------------------------- taille[0] EQ 3 AND jpt NE 1:BEGIN case 1 of taille[1] eq nx and taille[2] eq ny AND taille[3] eq jpt: taille[1] eq jpi and taille[2] eq jpj AND taille[3] eq jpt:array=array[premierx:dernierx, premiery:derniery, *] else:return, report('Probleme d''adequation entre les tailles !C du domaine nx*ny*jpt '+strtrim(nx, 1)+'*'+strtrim(ny, 1)+'*'+strtrim(jpt, 1)+'!C et du tableau '+strtrim(taille[1], 1)+'*'+strtrim(taille[2], 1)+'*'+strtrim(taille[3], 1)) endcase END ;---------------------------------------------------------------------------- ;xyzt ;---------------------------------------------------------------------------- taille[0] EQ 4:BEGIN case 1 of taille[1] eq nx and taille[2] eq ny and taille[3] eq nz AND taille[4] eq jpt: taille[1] eq nx and taille[2] eq ny and taille[3] eq jpk AND taille[4] eq jpt: $ array=array[*, *, premierz:dernierz, *] taille[1] eq jpi and taille[2] eq jpj and taille[3] eq jpk AND taille[4] eq jpt: $ array=array[premierx:dernierx, premiery:derniery, premierz:dernierz, *] taille[1] eq nx and taille[2] eq ny and taille[3] eq jpk AND taille[4] eq jpt: $ array=array[premierx:dernierx, premiery:derniery, *, *] else:return, report('Probleme d''adequation entre les tailles !C du domainenx*ny*nz*jpt '+strtrim(nx, 1)+'*'+strtrim(ny, 1)+'*'+strtrim(nz, 1)+'*'+strtrim(jpt, 1)+' !C et du tableau '+strtrim(taille[1], 1)+'*'+strtrim(taille[2], 1)+'*'+strtrim(taille[3], 1)+'*'+strtrim(taille[4], 1)) endcase END endcase ;---------------------------------------------------------------------------- return, array end