Exemplo n.º 1
0
int Boundary_write(
  DBfile *idbid, 	
  Boundary_t *ptr, 	
  char *field)		
{
  char *me = "Boundary_write";
  if (RGST_DEL_ATTR_FROM_FIELDS("Boundary_t","dump") != 0)
    ctlerror(me,gv_errmsg_rgst_del_attrs_from_fields);
  if (strcmp(field,"bnd") == 0) {
    if (RGST_ADD_MULT_FIELD_ATTRS("Boundary_t",bnd_fields,attrs) != 0) {
      ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
    }
    ptr->len_nsendtot = ptr->len_nsend1 + ptr->len_nsend2 + ptr->len_nsendc;
    ptr->len_zsendtot = ptr->len_zsend1 + ptr->len_zsend2 + ptr->len_zsendc;
    ptr->len_nrecvtot = ptr->len_nrecv1 + ptr->len_nrecv2 + ptr->len_nrecvc;
    ptr->len_zrecvtot = ptr->len_zrecv1 + ptr->len_zrecv2 + ptr->len_zrecvc;
  } else if (strcmp(field,"sldbnd") == 0) {
    if (RGST_ADD_MULT_FIELD_ATTRS("Boundary_t",sldbnd_fields,attrs) != 0) {
      ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
    }
    ptr->len_nsendtot = ptr->len_nsend1 + ptr->len_nsend2 + ptr->len_nsendc;
    ptr->len_zsendtot = ptr->len_nsend1;
    ptr->len_nrecvtot = ptr->len_nrecv1 + ptr->len_nrecv2 + ptr->len_nrecvc;
  } else {
    Boundary_setup_attrs();
  }
  return(0);
}
Exemplo n.º 2
0
int Boundary_pre_read(
  DBfile *idbid, 	
  Boundary_t *ptr, 	
  char *field)		
{
  char *me = "Boundary_pre_read";
  if (RGST_DEL_ATTR_FROM_FIELDS("Boundary_t","dump") != 0)
    ctlerror(me,gv_errmsg_rgst_del_attrs_from_fields);
  if (strcmp(field,"bnd") == 0) {
    if (RGST_ADD_MULT_FIELD_ATTRS("Boundary_t",bnd_fields,attrs) != 0) {
      ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
    }
  } else if (strcmp(field,"sldbnd") == 0) {
    if (RGST_ADD_MULT_FIELD_ATTRS("Boundary_t",sldbnd_fields,attrs) != 0) {
      ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
    }
    ptr->active       = 1;
    ptr->len_zsend1   = 0;
    ptr->len_zsend2   = 0;
    ptr->len_zsendc   = 0;
    ptr->len_zrecv1   = 0;
    ptr->len_zrecv2   = 0;
    ptr->len_zrecvc   = 0;
    ptr->len_zrecvtot = 0;
  } else {
    Boundary_setup_attrs();
  }
  return(0);
}
Exemplo n.º 3
0
int hash_tbl_rgst(
  HashTable_t **htp,             
  char *name)                    
{
  char *me = "hash_tbl_rgst";
  char msg[512], *ps_save, *line_save, sym_save[MAXLINE];
  int error, symflag_save;
  if (name == NULL) {
    ctlerror(me,"name must be specified to register hash table");
  } 
  if ((htp == NULL) || (*htp == NULL)) {
    ctlerror(me,"hash table pointer is NULL");
  }
  if ((*htp)->name != NULL) {
    if (rgst_check_for_obj((*htp)->name) == TRUE) { 
      rgst_del((*htp)->name);
      sprintf(msg,"\nHash table '%s' being re-registered as"
                  "\nHash table '%s'",(*htp)->name,name);
      ctlnotice(me,msg);
    }
    FREEMEM((*htp)->name);
  }
  (*htp)->name = strsave(name);  
  rgst_add(name, "HashTable_t *", htp, NULL);
  return(0);
}
void rgst_verify_struct_td_defn(
  char *name,                  
  RGST_StructTypeDef_t *sd,    
  int struct_size)             
{
  char *me = "rgst_verify_struct_td_defn";
  int  i, j;
  char msg[256];
  HashElm_t *hash_elm;
  for (i=0; i<sd->num_fields; i++) {
    if (debugflag == TRUE)
      printf("\n  checking field '%s'",sd->fields[i].name);
    if (  (sd->fields[i].type == R_STRUCT) 
       || (sd->fields[i].type == R_CTYPE_TYPEDEF)
       || (sd->fields[i].type == R_ENUM_TYPEDEF)
       || (sd->fields[i].type == R_STRUCT_TYPEDEF) ) {
      if (sd->fields[i].td_name[0] == '\0') { 
        ctlerror(me,"td_name (name of typedef) is null");
      }
      hash_elm = hash_lookup_elm(sd->fields[i].td_name,rgst_types_hash_tbl);
      if (hash_elm == NULL) {
        if (  (strncmp(sd->fields[i].td_name,name,strlen(name) - 2) == 0) 
           || (    (strcmp(name,"AttrArray_t") == 0) 
                && (strcmp(sd->fields[i].td_name,"RGST_Attribute_s") == 0)
              )
           ) {
          ; 
        }
        else {
          sprintf(msg,"\n\tStructure '%s' -- field '%s'\n\tof type '%s' is bad."
                      "\n\tRegistry does not know of type '%s'",
                      name,
                      sd->fields[i].name,
                      sd->fields[i].td_name,
                      sd->fields[i].td_name);
          ctlnotice(me,msg); 
        }
      } 
      else {						       
        if (strcmp(hash_elm->type,rgst_datatype_strs[sd->fields[i].type]) != 0) {
          ctlerror(me,"Programmer error: sd->fields[i].type != hash_elm->type");
        }
      }
    }
    else {
      if (sd->fields[i].td_name[0] != '\0') {
        ctlerror(me,"td_name (name of typedef) should be null");
      }
    } 
    for (j=0; j<sd->fields[i].ndims; j++) {
      if (sd->fields[i].dims[j] < 1) 
        ctlerror(me,"dimension must be 1 or greater");
    }
  }
}
Exemplo n.º 5
0
Conditional_t *Conditional_construct(int num)
{
  char *me = "Conditional_construct";
  int i;
  Conditional_t *ptr;
  if (num < 1) ctlerror(me,logic_err);
  ptr = ALLOT(Conditional_t, num);
  if (ptr == NULL) ctlerror(me,gv_errmsg_memory);
  for (i=0; i<num; i++) {
    Conditional_init(&(ptr[i]));
  }
  return(ptr);
}
Exemplo n.º 6
0
Species_t *Species_construct(int num)
{
  char *me = "Species_construct";
  int i;
  Species_t *spec;
  if (num < 1) ctlerror(me,logic_err);
  spec = ALLOT(Species_t, num);
  if (spec == NULL) ctlerror(me,gv_errmsg_memory);
  for (i=0; i<num; i++) {
    Species_init(&(spec[i]));
  }
  return(spec);
}
Exemplo n.º 7
0
Source_t *Source_construct(int num)
{
  char *me = "Source_construct";
  int i;
  Source_t *ptr;
  if (num < 1) ctlerror(me,logic_err);
  ptr = ALLOT(Source_t, num);
  if (ptr == NULL) ctlerror(me,gv_errmsg_memory);
  for (i=0; i<num; i++) {
    Source_init(&(ptr[i]));
  }
  return(ptr);
}
Exemplo n.º 8
0
AttrArray_t *AttrArray_construct(int num)
{
  char *me = "AttrArray_construct";
  int i;
  AttrArray_t *ptr;
  if (num < 1) ctlerror(me,logic_err);
  ptr = ALLOT(AttrArray_t, num);
  if (ptr == NULL) ctlerror(me,gv_errmsg_memory);
  for (i=0; i<num; i++) {
    AttrArray_init(&(ptr[i]));
  }
  return(ptr);
}
Exemplo n.º 9
0
static void
boxboxresize(Group *g, Rectangle r)
{
	int rows, cols, ht, wid, i, hpad, wpad;
	Rectangle rr;

	if(debug) fprint(2, "boxboxresize %q %R (%d×%d) min/max %R separation %d\n", g->name, r, Dx(r), Dy(r), g->size, g->separation);
	ht = 0;
	for(i=0; i<g->nkids; i++){
		if (g->kids[i]->size.min.y > ht)
			ht = g->kids[i]->size.min.y;
	}
	if (ht == 0)
		ctlerror("boxboxresize: height");
	rows = Dy(r) / (ht+g->separation);
	hpad = (Dy(r) % (ht+g->separation)) / g->nkids;
	cols = (g->nkids+rows-1)/rows;
	wid = Dx(r) / cols - g->separation;
	for(i=0; i<g->nkids; i++){
		if (g->kids[i]->size.max.x < wid)
			wid = g->kids[i]->size.max.x;
	}
	for(i=0; i<g->nkids; i++){
		if (g->kids[i]->size.min.x > wid)
			wid = g->kids[i]->size.min.x;
	}
	if (wid > Dx(r) / cols)
		ctlerror("can't fit controls in boxbox");
	wpad = (Dx(r) % (wid+g->separation)) / g->nkids;
	rr = rectaddpt(Rect(0,0,wid, ht), addpt(r.min, Pt(g->separation/2, g->separation/2)));
	if(debug) fprint(2, "boxboxresize rows %d, cols %d, wid %d, ht %d, wpad %d, hpad %d\n", rows, cols, wid, ht, wpad, hpad);
	for(i=0; i<g->nkids; i++){
		if(debug) fprint(2, "	%d %q: %R (%d×%d)\n", i, g->kids[i]->name, rr, Dx(rr), Dy(rr));
		_ctlprint(g->kids[i], "rect %R",
			rectaddpt(rr, Pt((wpad+wid+g->separation)*(i/rows), (hpad+ht+g->separation)*(i%rows))));
	}
	g->nseparators = rows + cols - 2;
	g->separators = realloc(g->separators, g->nseparators*sizeof(Rectangle));
	rr = r;
	rr.max.y = rr.min.y + g->separation+hpad;
	for (i = 1; i < rows; i++){
		g->separators[i-1] = rectaddpt(rr, Pt(0, (hpad+ht+g->separation)*i-g->separation-hpad));
		if(debug) fprint(2, "row separation %d [%d]: %R\n", i, i-1, rectaddpt(rr, Pt(0, (hpad+ht+g->separation)*i-g->separation)));
	}
	rr = r;
	rr.max.x = rr.min.x + g->separation+wpad;
	for (i = 1; i < cols; i++){
		g->separators[i+rows-2] = rectaddpt(rr, Pt((wpad+wid+g->separation)*i-g->separation-wpad, 0));
		if(debug) fprint(2, "col separation %d [%d]: %R\n", i, i+rows-2, rectaddpt(rr, Pt((wpad+wid+g->separation)*i-g->separation, 0)));
	}
}
RGST_AttributeElem_t *rgst_create_RGST_AttributeElem_t(
  char         *name,	  
  ATTR_Assoc_t    assoc,    
  RGST_Datatype_t datatype, 
  void          *v_ptr,   
  RGST_Field_t    *fld_ptr) 
{
  char *me = "rgst_create_RGST_AttributeElem_t";
  RGST_AttributeElem_t *elm;
  if ((elm = ALLOT(RGST_AttributeElem_t, 1)) == NULL) ctlerror(me,gv_errmsg_memory);
  elm->name                         = strsave(name);
  elm->assoc                        = assoc;
  elm->rgst_datatype                = NUM_RGST_Datatype_t;
  elm->rgst_ctype_defn              = NULL;
  elm->rgst_enum_defn               = NULL;
  elm->rgst_struct_defn             = NULL;
  elm->rgst_field                   = NULL;
  elm->rgst_obj                     = NULL;
  elm->next                         = NULL;
  elm->prev                         = NULL;
  switch (elm->assoc) {
    case A_TYPE:
      elm->rgst_datatype = datatype;
      if ((datatype == R_STRUCT) || (datatype == R_STRUCT_TYPEDEF)) {
        elm->rgst_struct_defn = (RGST_StructTypeDef_t *)v_ptr;
      }
      else if (datatype == R_CTYPE_TYPEDEF) {
        elm->rgst_ctype_defn = (RGST_CTypeDef_t *)v_ptr;
      }
      else if (datatype == R_ENUM_TYPEDEF) {
        elm->rgst_enum_defn = (RGST_EnumTypeDef_t *)v_ptr;
      }
      else  {
        ctlerror(me,logic_err);
      }
      break;
    case A_FIELD:
      elm->rgst_datatype    = datatype;
      elm->rgst_struct_defn = (RGST_StructTypeDef_t *)v_ptr;
      elm->rgst_field       = fld_ptr;
      break;
    case A_OBJECT:
      elm->rgst_obj = (RGST_Object_t *)v_ptr;
      break;
    default:
      ctlerror(me,"Programmer error: assoc is invalid");
  }
  return(elm);
}  
Exemplo n.º 11
0
int comreduce(
  void *inbuf,          
  int count,            
  int op,               
  int com_type,         
  int data_type)        
{
  char *me = "comreduce";
  int i, error;
  int    *outbufi, *inbufi;
  double *outbufd, *inbufd;
  MPI_Op opout;
  com_start = MPI_Wtime_Wrapper();
  if ((com_type != COM_ALL) && (com_type != COM_ONE))
    ctlerror(me,logic_err);
  switch(op) {
   case COM_SUM: opout = MPI_SUM; break;
   case COM_MAX: opout = MPI_MAX; break;
   case COM_MIN: opout = MPI_MIN; break;
   default     : ctlerror(me,logic_err);
  }
  switch (data_type) {
   case COM_DOUBLE:
    outbufd = ALLOT(double,count);
    inbufd  = inbuf;
    if (com_type==COM_ALL) 
     error = MPI_Allreduce_Wrapper(inbuf,outbufd,count,MPI_DOUBLE,opout,MPI_COMM_WORLD);
    else 
     error = MPI_Reduce_Wrapper(inbuf,outbufd,count,MPI_DOUBLE,opout,0,MPI_COMM_WORLD);
    for (i=0;i<count;i++) inbufd[i]=outbufd[i]; 
    FREEMEM(outbufd);
    break;
   case COM_INT:
    outbufi = ALLOT(int,count);
    inbufi  = inbuf;
    if (com_type==COM_ALL) 
     error = MPI_Allreduce_Wrapper(inbuf,outbufi,count,MPI_INT,opout,MPI_COMM_WORLD);
    else 
     error = MPI_Reduce_Wrapper(inbuf,outbufi,count,MPI_INT,opout,0,MPI_COMM_WORLD);
    for (i=0;i<count;i++) inbufi[i]=outbufi[i]; 
    FREEMEM(outbufi);
    break;
   default:
     ctlerror(me,logic_err);
  }
  com_reduce_time += MPI_Wtime_Wrapper() - com_start;
  return(error);
}
Exemplo n.º 12
0
DBfile *openpdmp( char* kern, int cyc, int num, int mode, char* dmpname)
{
   char *me = "openpdmp";
   DBfile *idbidin;
   int ierr;
   char infotmp[30], msg[128];
   char fullname[MAXLINE];
   if (num >= 0) {
      if (cyc >= 0) {
         sprintf(dmpname, "%s-%04d-%05d.silo", kern, num, cyc) ;
      } else {
         sprintf(dmpname, "%s-%04d.silo", kern, num) ;
      } 
   } else {
      if (cyc >= 0) {
         sprintf(dmpname, "%s%05d.silo", kern, cyc) ;
      } else {
         sprintf(dmpname, "%s.silo", kern) ;
      }
   } 
   if (mode == 2) return(NULL);
   DBShowErrors(DB_NONE, NULL);
   if (mode == 0) {
      idbidin = DBOpen (dmpname, DB_PDB, DB_READ);
      if (idbidin == NULL) ctlerror(me,gv_errmsg_DBOpen);
   } else {
      sprintf(infotmp, "%s dump file", meshlink_codesys);
      strcpy(fullname,outpath);
      strcat(fullname,dmpname);
      idbidin = DBCreate(fullname, DB_CLOBBER, DB_LOCAL, infotmp, DB_PDB );
   } 
   DBShowErrors(DB_TOP, NULL);
   return(idbidin);
}
Exemplo n.º 13
0
int rgst_get_nelms_in_rgst_obj (
    RGST_Object_t *ro,
    long *ret_dim_nelms,
    long *ret_ptr_nelms,
    long *ret_nelms)
{
    char *me = "rgst_get_nelms_in_rgst_obj";
    int i;
    long dim_nelms, ptr_nelms, nelms;
    dim_nelms = ptr_nelms = -1;
    if (ro->array_size_type == FIELD_OFFSET) {
        ctlerror(me,"Shawn hasn't coded this logic yet");
    }
    else if (ro->array_size_type == GLOBAL_VAR) {
        ptr_nelms = rgst_get_long(ro->array_size_global_var);
        nelms     = ptr_nelms;
    }
    else if (ro->array_size_type == ABSOLUTE_VALUE) {
        ptr_nelms = ro->array_size_absolute_val;
        nelms     = ptr_nelms;
    }
    else {
        dim_nelms = 1;
        for (i=0; i<ro->ndims; i++) {
            dim_nelms = dim_nelms * ro->dims[i];
        }
        nelms = dim_nelms;
    }
    *ret_dim_nelms = dim_nelms;
    *ret_ptr_nelms = ptr_nelms;
    *ret_nelms     = nelms;
    return(0);
}
Exemplo n.º 14
0
static void
groupsize(Control *c)
{
	Rectangle r;
	int i;
	Control *q;
	Group *g;

	g = (Group*)c;
	assert(g->type == Ctlcolumn || g->type == Ctlrow || g->type == Ctlstack);
	if (g->mansize) return;
	r = Rect(1, 1, 1, 1);
	if (debug) fprint(2, "groupsize %q\n", g->name);
	for (i = 0; i < g->nkids; i++){
		q = g->kids[i];
		if (q->setsize)
			q->setsize(q);
		if (q->size.min.x == 0 || q->size.min.y == 0 || q->size.max.x == 0 || q->size.max.y == 0)
			ctlerror("%q: bad size %R", q->name, q->size);
		if (debug) fprint(2, "groupsize %q: [%d %q]: %R\n", g->name, i, q->name, q->size);
		switch(g->type){
		case Ctlrow:
			if (i)
				r.min.x += q->size.min.x + g->border;
			else
				r.min.x = q->size.min.x;
			if (i)
				r.max.x += q->size.max.x + g->border;
			else
				r.max.x = q->size.max.x;
			if (r.min.y < q->size.min.y) r.min.y = q->size.min.y;
			if (r.max.y < q->size.max.y) r.max.y = q->size.max.y;
			break;
		case Ctlcolumn:
			if (r.min.x < q->size.min.x) r.min.x = q->size.min.x;
			if (r.max.x < q->size.max.x) r.max.x = q->size.max.x;
			if (i)
				r.min.y += q->size.min.y + g->border;
			else
				r.min.y = q->size.min.y;
			if (i)
				r.max.y += q->size.max.y + g->border;
			else
				r.max.y = q->size.max.y;
			break;
		case Ctlstack:
			if (r.min.x < q->size.min.x) r.min.x = q->size.min.x;
			if (r.max.x < q->size.max.x) r.max.x = q->size.max.x;
			if (r.min.y < q->size.min.y) r.min.y = q->size.min.y;
			if (r.max.y < q->size.max.y) r.max.y = q->size.max.y;
			break;
		}
	}
	g->size = rectaddpt(r, Pt(g->border, g->border));
	if (debug) fprint(2, "groupsize %q: %R\n", g->name, g->size);
}
Exemplo n.º 15
0
void* ProblemArray_allotptr(char *name, HashTable_t *hash) {
   char *me = "ProblemArray_allotptr";
   char msg[MAXLINE];
   int i;
   ProblemArray_t *prb = ProblemArray_find(name, hash);
   if (prb == NULL) {
      sprintf(msg, "Attempt to allocate pointer for %s failed because ProblemArray does not exist for it.",name);
      ctlerror(me,msg);
   }
   if (prb->ptr != NULL) {
      sprintf(msg, "An attempt has been made to allocate pointer a non-null pointer for %s.", name);
      ctlerror(me,msg);
   }
   if (prb->type == R_INT) {
      int *iptr = MALLOT(int, prb->len);
      for (i = 0; i < prb->len; i++) {
         iptr[i] = 0;
      }
      prb->ptr = (void *) iptr;
   } else if (prb->type == R_DOUBLE) {
Exemplo n.º 16
0
void  AttrArray_add(
  RGST_Attribute_t  *new_attr, 
  AttrArray_t *ptr)            
{
  char *me = " AttrArray_add";
  int i;
  if (ptr == NULL) ctlerror(me,logic_err);
  if (ptr->num_attrs >= ptr->size_attrs) {
    ptr->size_attrs += 5;
    if (ptr->attrs == NULL) {
      ptr->attrs = (RGST_Attribute_t **)malloc(ptr->size_attrs * sizeof(void *));
    }
    else {
      ptr->attrs = (RGST_Attribute_t **)realloc(ptr->attrs, ptr->size_attrs * sizeof(void *));
    }
    if (ptr->attrs == NULL) ctlerror(me,gv_errmsg_memory);
    for (i=ptr->size_attrs-5; i<ptr->size_attrs; i++) ptr->attrs[i] = NULL;
  }
  ptr->attrs[ptr->num_attrs] = new_attr;
  ptr->num_attrs++;
}
Exemplo n.º 17
0
void *rgst_construct(
  RGST_Datatype_t type,  
  char *struct_name,   
  int   num)           
{
  char *me = "rgst_construct";
  char *not_done = "shawn not done yet";
  char  msg[256], routine_name[128];
  int   i;
  long  long_ptr_addr;
  size_t size;
  RGST_StructTypeDef_t  *sd = NULL;     
  void     *ptr = NULL;                 
  Command_t *cp = NULL;
  void  *struct_ptr;   
  if ((type < 0) || (type >= NUM_RGST_Datatype_t)) ctlerror(me,logic_err);
  if (num < 1) ctlerror(me,logic_err);
  if ((type >= R_CHAR) && (type <= R_DOUBLE)) {
    size = (size_t)rgst_datatype_sizes[type];
    ptr = ALLOT(unsigned char, (size * num));
  }
Exemplo n.º 18
0
void ProblemArray_add(char *name, void *ptr, int len, RGST_Datatype_t type, 
                      HashTable_t *hash) {
   char *me = "ProblemArray_add";
   char msg[MAXLINE];
   int exists;
   ProblemArray_t *prb = NULL;
   exists = 0;
   if (hash == NULL) {
      if (rgst_check_for_obj(name)) {
         exists = 1;
         prb = (ProblemArray_t *) rgst_get_t(name,"ProblemArray_t");
#ifdef DEBUG
         sprintf(msg,"Attempting to over write problem array %s",name);
         ctlwarning(me,msg);
#endif
      } else {
         prb = MALLOT(ProblemArray_t,1);
      } 
   } else {
      prb = (ProblemArray_t *) hash_lookup_obj(name, hash);
      if (prb != NULL) {
         exists = 1;
#ifdef DEBUG
         sprintf(msg,"Attempting to over write problem array %s",name);
         ctlwarning(me,msg);
#endif
      } else {
         prb = MALLOT(ProblemArray_t,1);
      } 
   }
   if (exists) {
      if (ptr != NULL)  {
         prb->ptr  = ptr;
	 prb->len  = len;
      }
      if (prb->type != type) {
         sprintf(msg,"Attempting to change type of problem array %s.",name);
         ctlerror(me,msg);
      }
   } else {
      prb->ptr  = ptr;
      prb->len  = len;
      prb->type = type;
      prb->hash = NULL;
      strcpy(prb->name, name);
   } 
   if (hash == NULL) {
      if (!exists) rgst_add(name,"ProblemArray_t", prb, NULL);
   } else {
      if (!exists) hash_add(name, "ProblemArray", prb, hash);
   } 
}
Exemplo n.º 19
0
int Source_setup_attrs(void)
{
  char *me = "Source_setup_attrs";
  static int first_time_thru = TRUE;
  if (RGST_ADD_ATTR_TO_FIELDS("Source_t","dump") != 0)
    ctlerror(me,gv_errmsg_rgst_add_attrs_to_fields);
  if (first_time_thru == TRUE) {
    inst_c("Source_init",      Source_init,      zargse, 0, symtab);
    inst_c("Source_construct", Source_construct, zargse, 0, symtab);
    first_time_thru = FALSE;
  }
  return(0);
}
Exemplo n.º 20
0
int rdparms(DBfile *idbid)    
{
  char *me = "rdparms";
  char startdir[256];
  int i, ndx;
  int  *ints = NULL;
  double *doubles = NULL;
  char *chars = NULL, *str = NULL;
  DBcompoundarray *comparray;
  if (DBGetDir(idbid,startdir) != 0)        ctlerror(me,gv_errmsg_DBGetDir);
  if (DBSetDir(idbid,"/Global/Parms") != 0) ctlerror(me,gv_errmsg_DBSetDir);
  comparray = DBGetCompoundarray(idbid, "int_parms");
  if (  (comparray == NULL)
     || (comparray->datatype != DB_INT) ) {
    ctlerror(me,logic_err);
  }
  ints = (int *)comparray->values;
  for (i=0; i<comparray->nelems; i++) {
    if (comparray->elemlengths[i] != 1) { ctlerror(me,logic_err); }
    setparmi(comparray->elemnames[i],ints[i]);
  }
  DBFreeCompoundarray(comparray);
  comparray = DBGetCompoundarray(idbid, "double_parms");
  if (  (comparray == NULL)
     || (comparray->datatype != DB_DOUBLE) ) {
    ctlerror(me,logic_err);
  }
  doubles = (double *)comparray->values;
  for (i=0; i<comparray->nelems; i++) {
    if (comparray->elemlengths[i] != 1) { ctlerror(me,logic_err); }
    setparmf(comparray->elemnames[i],doubles[i]);
  }
  DBFreeCompoundarray(comparray);
  comparray = DBGetCompoundarray(idbid, "char_parms");
  if (  (comparray == NULL)
     || (comparray->datatype != DB_CHAR) ) {
    ctlerror(me,logic_err);
  }
  chars = (char *)comparray->values;
  ndx = 0;
  for (i=0; i<comparray->nelems; i++) {
    setparmc(comparray->elemnames[i], &(chars[ndx]) );
    ndx = ndx + comparray->elemlengths[i];
  }
  DBFreeCompoundarray(comparray);
  if (DBSetDir(idbid, startdir)  != 0) ctlerror(me,gv_errmsg_DBSetDir);
  return(0);
}
Exemplo n.º 21
0
RGST_Attribute_t * AttrArray_search(
  char            *attr_name, 
  AttrArray_t *ptr)       
{
  char *me ="AttrArray_search";
  int i;
  if (ptr == NULL) ctlerror(me,logic_err);
  for (i=0; i<ptr->num_attrs; i++) {
    if (strcmp(attr_name,ptr->attrs[i]->attr_name) == 0) {
      return(ptr->attrs[i]);
    }
  }
  return(NULL);
}
Exemplo n.º 22
0
int rgst_init(void)
{
  char *me = "rgst_init";
  int i;
  RGST_BasicCTypeDef_t *c_type;
  RGST_Function_t          *fn;
  rgst_types_hash_tbl      = hash_tbl_create(61, NULL);
  rgst_objs_hash_tbl       = hash_tbl_create(2039, NULL);
  rgst_field_ndx_hash_tbl  = hash_tbl_create(1021, NULL);
  if ((rgst_types_hash_tbl     == NULL)  || 
      (rgst_objs_hash_tbl      == NULL)  ||
      (rgst_field_ndx_hash_tbl == NULL)) {
    return(-1);
  }
  for (i=0; i<R_VOID; i++) {
    if ((c_type = ALLOT(RGST_BasicCTypeDef_t, 1)) == NULL)
      ctlerror(me,gv_errmsg_memory);
    c_type->type      = (RGST_Datatype_t) i;
    c_type->type_size = rgst_datatype_sizes[i];
    hash_add(rgst_datatype_strs[i],
             rgst_datatype_strs[i],
             c_type, rgst_types_hash_tbl);
  }
  if ((fn = ALLOT(RGST_Function_t, 1)) == NULL)
    ctlerror(me,gv_errmsg_memory);
  hash_add(rgst_datatype_strs[R_FUNCTION],
           rgst_datatype_strs[R_FUNCTION],
           fn, rgst_types_hash_tbl);
  rgst_add_h_file_types();
  rgst_types_hash_tbl->name      = strsave(RGST_TYPES_HT_NAME);
  rgst_objs_hash_tbl->name       = strsave(RGST_OBJS_HT_NAME);
  rgst_field_ndx_hash_tbl->name  = strsave(RGST_Field_t_NDX_HT_NAME);
  rgst_add(rgst_types_hash_tbl->name,     "HashTable_t *", &rgst_types_hash_tbl,     NULL);
  rgst_add(rgst_objs_hash_tbl->name,      "HashTable_t *", &rgst_objs_hash_tbl,      NULL);
  rgst_add(rgst_field_ndx_hash_tbl->name, "HashTable_t *", &rgst_field_ndx_hash_tbl, NULL);
  return(0);
}
Exemplo n.º 23
0
RGST_AttributeElem_t *rgst_list_attr(
  ATTR_Assoc_t assoc,       
  char       *attr_name)  
{
  char *me = "rgst_list_attr";
  char msg[128];
  RGST_Attribute_t *attr;
  if ((attr = rgst_get_t(attr_name,RGST_Attribute_t_STR)) == NULL) 
    return(NULL);
  if      (assoc == A_OBJECT) return(attr->obj_head);
  else if (assoc == A_TYPE)   return(attr->type_head);
  else if (assoc == A_FIELD)  return(attr->field_head);
  else                        ctlerror(me,logic_err);
  return(NULL);
}
Exemplo n.º 24
0
int Boundary_setup_attrs(void)
{
  char *me = "Boundary_setup_attrs";
  static int first_time_thru = TRUE;
  if (RGST_ADD_MULT_FIELD_ATTRS("Boundary_t",bnd_fields,attrs) != 0)
    ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
  if (first_time_thru == TRUE) {
#ifdef SILO
    inst_c("Boundary_write",    Boundary_write,    zargse, 0, symtab);
    inst_c("Boundary_pre_read", Boundary_pre_read, zargse, 0, symtab);
#endif
    first_time_thru = FALSE;
  }
  return(0);
}
Exemplo n.º 25
0
int hash_optimize_all(void)
{
  char *me = "hash_optimize_all";
  char **ht_names;
  int  num_ht, i;
  HashTable_t **htp = NULL;
  ht_names = rgst_list_objs_by_type(&num_ht, "HashTable_t *");
  for (i=0; i<num_ht; i++) {
    htp = (HashTable_t **)rgst_get_t(ht_names[i],"HashTable_t *");
    if (htp == NULL) { ctlerror(me,logic_err); }
    hash_optimize(htp);  
    FREEMEM(ht_names[i]);
  }
  FREEMEM(ht_names);
  return(0);
}
Exemplo n.º 26
0
void  AttrArray_del(
  char *attr_name,   
  AttrArray_t *ptr)  
{
  char *me = " AttrArray_del";
  int i, j;
  if (ptr == NULL) ctlerror(me,logic_err);
  for (i=0; i<ptr->num_attrs; i++) {
    if (strcmp(attr_name,ptr->attrs[i]->attr_name) == 0) {
      for(j=i; j<(ptr->num_attrs-1); j++) {
        ptr->attrs[j] = ptr->attrs[j+1];
      }
      ptr->attrs[ptr->num_attrs-1] = NULL;
      ptr->num_attrs--;
      return;
    }
  }
}
Exemplo n.º 27
0
int tpamp( void )
{
  char *me = "tpamp", msg[256];
  int i, j, k, icur;
  double *times;
  TimePlot_t *my_tpd  = NULL;
  TimePlotCurve_t *my_tpc = NULL;
  if (myid != 0) { return(0); }
  strcpy(msg,outpath);
  strcat(msg,pbnm);
  strcat(msg,".ult");
  fpamp = fopen(msg,"wt");
  for (i=0 ; i<ntp ; i++) {
    my_tpd = tpdata[i];
    if (strcmp("time $",my_tpd->tp_curs[0]->eval_string) != 0) {
      ctlerror(me,logic_err);
    }
    if (my_tpd->num_data_pts > 0) {
      times = my_tpd->tp_curs[0]->data[0];
    }
    for (icur=1; icur < my_tpd->num_tp_curs; icur++) {
      my_tpc = my_tpd->tp_curs[icur];
      for (j=0; j<my_tpc->num_vals; j++) {
        if (my_tpc->labels[j] == NULL) {
          if (my_tpc->num_vals == 1) {
            PRINT(fpamp,"# %s vs. time\n",my_tpc->eval_string);
          }
          else {
            PRINT(fpamp,"# %s [%d] vs. time\n",my_tpc->eval_string,j);
          }
        }
        else {
          PRINT(fpamp,"# %s vs. time\n",my_tpc->labels[j]);
        }
        for (k=0; k<my_tpd->num_data_pts; k++) {
          PRINT(fpamp," %.14e  %.14e\n",times[k],my_tpc->data[j][k]);
        }
        PRINT(fpamp,"end\n") ;
      }
    }
  }
  fclose(fpamp);
  return(0);
}
Exemplo n.º 28
0
int hash_tbl_create_n_rgst(
  HashTable_t **htp,             
  int size,                      
  char *name)                    
{
  char *me = "hash_tbl_create_n_rgst";
  HashTable_t *ht;
  if (name == NULL) {
    ctlerror(me,"name must be specified to register hash table");
  } 
  ht = hash_tbl_create(size,name);
  if (ht == NULL) { 
    *htp = NULL;
    return(-1); 
  }
  rgst_add(name, "HashTable_t *", htp, NULL);
  *htp = ht;
  return(0);
}
Exemplo n.º 29
0
int Conditional_setup_attrs(void)
{
  char *me = "Conditional_setup_attrs";
  static int first_time_thru = TRUE;
  char *fields[10] = {
    "id",             "once",   "active",
    "expression_len", "msg_len",
    "expression",     "msg",
    NULL
  };
  char *attrs[2] = {"dump", NULL};
  if (RGST_ADD_MULT_FIELD_ATTRS("Conditional_t",fields,attrs) != 0)
     ctlerror(me,gv_errmsg_rgst_add_mult_attrs);
  if (first_time_thru == TRUE) {
    inst_c("Conditional_init",      Conditional_init,      zargse, 0, symtab);
    inst_c("Conditional_construct", Conditional_construct, zargse, 0, symtab);
    first_time_thru = FALSE;
  }
  return(0);
}
Exemplo n.º 30
0
ProblemArray_t *ProblemArray_setblk(char *name) { 
    char *me = "ProblemArray_setblk";
    int iblk;
    ProblemArray_t *prb;
    ProblemArray_t *parray;
    parray = MALLOT(ProblemArray_t, nblk);
    if (parray == NULL) ctlerror(me,gv_errmsg_memory);
    for (iblk = 0; iblk < nblk; iblk++) {
       prb = ProblemArray_find(name,domains[iblk].hash);
       if (prb == NULL) {
         FREEMEM(parray);
         break;
       }
       parray[iblk].ptr = prb->ptr;
       parray[iblk].len = prb->len;
       memset (parray[iblk].name,'\0',MAXWORD);
       strncpy(parray[iblk].name,name,MAXWORD-1);
    }
    return(parray);
}