source: trunk/WRF.COMMON/WRFV2/tools/data.c @ 2756

Last change on this file since 2756 was 11, checked in by aslmd, 14 years ago

spiga@svn-planeto:ajoute le modele meso-echelle martien

File size: 4.2 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <strings.h>
5
6#include "registry.h"
7#include "protos.h"
8#include "data.h"
9
10#define MAXTOKENS 30
11
12int
13init_dim_table()
14{
15  Dim = NULL ;
16  return(0) ;
17}
18
19node_t * 
20new_node ( int kind )
21{ node_t *p ; p = (node_t *)malloc(sizeof(node_t)) ; bzero(p,sizeof(node_t)); p->node_kind = kind ; return (p) ; }
22
23int
24add_node_to_end ( node_t * node , node_t ** list )
25{
26  node_t * p ;
27  if ( *list == NULL ) 
28    { *list = node ; }
29  else
30  {
31    for ( p = *list ; p->next != NULL ; p = p->next ) ;
32    p->next = node ;
33  }
34  return(0) ;
35}
36
37int
38add_node_to_end_4d ( node_t * node , node_t ** list )
39{
40  node_t * p ;
41  if ( *list == NULL ) 
42    { *list = node ; }
43  else
44  {
45    for ( p = *list ; p->next4d != NULL ; p = p->next4d ) ;
46    p->next4d = node ;
47  }
48  return(0) ;
49}
50
51#if 0
52int
53show_nodelist( node_t * p )
54{
55  show_nodelist1( p , 0 ) ;
56}
57
58show_nodelist1( node_t * p , int indent )
59{
60  if ( p == NULL ) return(0) ;
61  show_node1( p, indent) ;
62  show_nodelist1( p->next, indent ) ;
63}
64
65int
66show_node( node_t * p )
67{
68  return(show_node1(p,0)) ;
69}
70
71int
72show_node1( node_t * p, int indent )
73{
74  char spaces[] = "                           " ;
75  char tmp[25] , t1[25] , t2[25] ;
76  char * x, *ca, *ld, *ss, *se, *sg ;
77  char *nodekind ;
78  node_t * q ;
79  int nl ;
80  int i ;
81
82  if ( p == NULL ) return(1) ;
83  strcpy(tmp, spaces) ;
84  if ( indent >= 0 && indent < 20 ) tmp[indent] = '\0' ;
85
86// this doesn't make much sense any more, ever since node_kind was
87// changed to a bit mask
88  if      ( p->node_kind & RCONFIG ) nodekind = "RCONFIG" ;
89  else if ( p->node_kind & I1      ) nodekind = "I1" ;
90  else if ( p->node_kind & FIELD   ) nodekind = "FIELD" ;
91  else if ( p->node_kind & FOURD   ) nodekind = "FOURD" ;
92  else if ( p->node_kind & MEMBER  ) nodekind = "MEMBER" ;
93  else if ( p->node_kind & RCONFIG ) nodekind = "RCONFIG" ;
94
95  if ( !p->scalar_array_member )
96  {
97  switch ( p->node_kind )
98  {
99  case RCONFIG :
100  case I1      :
101  case FIELD   :
102  case FOURD   :
103  case MEMBER  :
104    fprintf(stderr,"%s%s : %10s ndims %1d\n",tmp,nodekind,p->name, p->ndims) ;
105    for ( i = 0 ; i < p->ndims ; i++ )
106    {
107      sg = "" ;
108      switch ( p->dims[i]->coord_axis ) {
109        case COORD_X : ca = "X" ; if ( p->stag_x ) sg = "*" ; break ;
110        case COORD_Y : ca = "Y" ; if ( p->stag_y ) sg = "*" ; break ;
111        case COORD_Z : ca = "Z" ; if ( p->stag_z ) sg = "*" ; break ;
112        case COORD_C : ca = "C" ; break ;
113      }
114      switch ( p->dims[i]->len_defined_how ) {
115        case DOMAIN_STANDARD : ld = "STANDARD" ;  ss = "" ; se = "" ; break ;
116        case NAMELIST        : ld = "NAMELIST" ;  ss = p->dims[i]->associated_namelist_variable ; se="" ; break ;
117        case CONSTANT        : ld = "CONSTANT" ;  sprintf(t1,"%d",p->dims[i]->coord_start) ; ss = t1 ;
118                                                  sprintf(t2,"%d",p->dims[i]->coord_end  ) ; se = t2 ;
119                                                  break ;
120      }
121      fprintf(stderr,"      dim %1d: %c %2s%s %10s %10s %10s\n",i,p->dims[i]->dim_name,ca,sg,ld,ss,se) ;
122    }
123    nl = 0 ;
124    if ( strlen( p->use     ) > 0 ) {
125       nl = 1 ; fprintf(stderr,"      use: %s",p->use) ;
126       if ( p->scalar_array_member ) fprintf(stderr,"(4D)") ;
127    }
128    if ( strlen( p->dname   ) > 0 ) { nl = 1 ; fprintf(stderr,"    dname: %s",p->dname) ;    }
129    if ( strlen( p->descrip ) > 0 ) { nl = 1 ; fprintf(stderr,"  descrip: %s",p->descrip) ;    }
130    if ( nl == 1 ) fprintf(stderr,"\n") ;
131    show_node1( p->type, indent+1 ) ;
132    break ;
133  case TYPE  :
134    x = "derived" ;
135    if ( p->type_type == SIMPLE ) x = "simple" ;
136    fprintf(stderr,"%sTYPE : %10s %s ndims %1d\n",tmp,p->name,x, p->ndims) ;
137    show_nodelist1( p->fields, indent+1 ) ;
138    break ;
139  case DIM   :
140    break ;
141  default :
142    break ;
143  }
144  }
145  show_nodelist1( p->members , indent+2 ) ;
146  return(0) ;
147}
148#endif
149
150int
151set_mark ( int val , node_t * lst )
152{
153  node_t * p ;
154  if ( lst == NULL ) return(0) ;
155  for ( p = lst ; p != NULL ; p = p->next )
156  {
157    p->mark = val ;
158    set_mark( val , p->fields ) ;
159    set_mark( val , p->members ) ;
160  }
161  return(0) ;
162}
163
164int
165set_mark_4d ( int val , node_t * lst )
166{
167  node_t * p ;
168  if ( lst == NULL ) return(0) ;
169  for ( p = lst ; p != NULL ; p = p->next4d )
170  {
171    p->mark = val ;
172    set_mark( val , p->fields ) ;
173    set_mark( val , p->members ) ;
174  }
175  return(0) ;
176}
177
Note: See TracBrowser for help on using the repository browser.