Beispiel #1
0
/**************************** Main ****************************************/
void main(void)
{
byte tasten_wert;
int gespeichert;

   if ( !initcom() ) exit(1);

   printf("\nROBY V1.01\n");
   printf("Positionen mit Tasten anfahren und speichern.\n");
   printf("Beenden mit der RUN-Taste.\n\n");

   do {
      tasten_wert = zeige_tasten();
      switch ( tasten_wert ) {
         case T_KEINE     : gespeichert = FALSE; halte_an(); break;
         case T_AUF       : drehe_auf();    break;
         case T_AB        : drehe_ab();     break;
         case T_LINKS     : drehe_links();  break;
         case T_RECHTS    : drehe_rechts(); break;
         case T_EIN       : magnet_ein();   break;
         case T_AUS       : magnet_aus();   break;
         case T_SPEICHERN : if ( !gespeichert ) {
                               gespeichert = TRUE;
                               speichere();
                            }
      }
   }
   while ( tasten_wert != T_RUN );
   printf("\aRUN gedr�ckt...\n");
   while ( !kbhit() ) fahre_ab(znum);
   printf("Gute Arbeit geleistet, lieber ROBY!\n");
}
Beispiel #2
0
/**************************** Main ****************************************/
void main(void)
{
   initcom();

   printf("\nFAPER2 V1.0\n");
   do {
      lab_aktual();
      printf("1. Wert: %d 2. Wert: %d\n", ewert[0], ewert[1]);
      delay(1000);
   } while ( !kbhit() );
}
Beispiel #3
0
/**************************** Main ****************************************/
void main(void)
{
int nb = 0;

   initcom();
   ginit();
   gwindow(0,1000,0,255);

   printf("\nFAPERG V1.0\n");
   do {
      lab_aktual();
      if ( nb == 0 ) gpos(nb,ewert[0]);
      else gdraw(nb,ewert[0]);
      delay(10);
      nb++;
   } while ( !kbhit() );
   gend();
}
Beispiel #4
0
/**************************** Main ****************************************/
void main(void)
{
int i;
unsigned char wert;

   initcom();
   ginit();
   gwindow(0,4000,0,255);

   printf("\nSPEICHKO V1.0\n");

   for ( i = 1; i <= 4000; i++ ) {
      wert = rxcharw();
      if ( i == 1) gpos(i,wert);
      else gdraw(i,wert);
   }

   txchar(CTRL_C);
   printf("Dr�cke Taste..."); getch();
   gend();
}
Beispiel #5
0
/**************************** Main ****************************************/
void main(void)
{
unsigned char zaehlertief, zaehlerhoch, data[256];
long periode = 1000000L;      /* Zeitintervall zwischen Messungen */
int i, start = TRUE;

   initcom();
   ginit();
   gwindow(0,255,0,255);

   t_start();			/* Installiere Timer-Software */
   t_alarm_start();		/* Installiere Alarm-Uhr */
   printf("\nPOISSON V1.0\n");


   for ( i = 0; i <= 255; i++ ) data[i] = 0;
   t_alarm_set(0,periode,T_ONCE);

   do {
      do ; while ( t_alarm_check(0) == 0 );
      t_alarm_set(0,periode,T_ONCE);
      txchar(SYNCHBYTE);
      zaehlertief = rxcharw();
      zaehlerhoch = rxcharw();

      if ( start ) start = FALSE;	 /* Erster Wert unbrauchbar */
      else data[zaehlertief]++;

      gclear();
      for ( i = 0; i <= 255; i++ ) {
	 if ( i == 0 ) gpos(i, data[i]);
	 else gdraw(i, data[i]);
      }
   } while ( !kbhit() );

   t_stop();   /* Desinstalliere Timer */
   printf("\nDr�cke Taste..."); getch(); getch();
   gend();
}
Beispiel #6
0
int Restart_read_driver(char *dmpname, int mdmpflag, int memflag)
{
   char *me = "Restart_read_driver";
   char *kern, *rem, *infostr;
   char msg[MAXLINE];
   int  i, error = 0, ierr;
   int  num, mycyc, iblk, gblk, namelen;
   int  mynblk;
   int  numBlocks, numDomains;
   int *domainFiles;
   DBfile *idbid;
   RGST_AttributeElem_t *func;
   if (memflag == 1) {
      memclr() ;
   }
   comlock(dmp_nbaton);
   if (mdmpflag) {
     kern = strtok(dmpname,"-");
     rem = strtok(NULL,"-");
     mycyc = atoi(rem);
     RestartCycle = mycyc;
     strcpy(RestartKernel,kern);
     rootfile_read(kern,mycyc);
   } else {
      namelen = strlen(dmpname);
      if (namelen > 10) {
	 memset(msg,'\0',MAXLINE);
         strncpy(RestartKernel,dmpname,namelen - 10);
         RestartKernel[namelen - 9] = '\0';
	 i = strlen(dmpname) - 10;
         strncpy(msg,&(dmpname[i]), 5);
         RestartCycle = atoi(msg);
      } else {
      } 
      idbid = DBOpen (dmpname, DB_PDB, DB_READ);
      if (idbid == NULL) {
         error = 1 ;
         sprintf(msg,"Can't open dump %s\n",dmpname);
         ctlwarning(me,msg);
         return(error) ;
      }
      infostr = DBGetVar (idbid, "_fileinfo");
      namelen = strlen(codename);
      if (strncmp (infostr, codename, namelen) != 0) {
	sprintf(msg,"Restarting from a dump which is not %s.  This is EVIL!\n",
		codename);
	ctlwarning(me,msg);
      }
      FREEMEM(infostr);
      decomp_setdir(idbid);
      ierr  = DBReadVar(idbid,"NumBlocks",&numBlocks);
      ierr += DBReadVar(idbid,"NumDomains",&numDomains);
      if (ierr != 0) ctlerror(me,gv_errmsg_DBReadVar);
      decomp_new(numBlocks, numDomains);
      decomp_read(idbid, msg, 0, 0);
      if (DBSetDir(idbid, "/") != 0) ctlerror(me,gv_errmsg_DBSetDir);
      error += Restart_read_global(idbid); 
      dmpattr_set();
      domainFiles = MALLOT(int, gnblk);
      for (gblk = 0; gblk < gnblk; gblk++) {  
         domainFiles[gblk] = gmap[gblk].lblk;
      }
      calculate_mappings();
      mynblk = 0;
      for (gblk = 0; gblk < gnblk; gblk++) {
         if (gmap[gblk].proc != myid) continue;
         iblk = gmap[gblk].lblk;
         Restart_read_domain(idbid, domainFiles[gblk], iblk); 
         mynblk++;
      }
      nblk = mynblk;
      DBClose(idbid);
      FREEMEM(domainFiles);
   }
   dmpattr_unset();
   comunlock(dmp_nbaton);
   ifparallel = 0;
   nblk = gnblk;
   initcom(NULL,0);
   sprintf(msg,"dump '%s' read",dmpname);
   ctlmsg(msg);
   printtc() ;
   func = rgst_list_attr(A_OBJECT, "Function_Gen");
   while (func != NULL) {
      Command_t *cp = (Command_t *) func->rgst_obj->obj;
      (*(cp->proc))();  
      func = func->next;
   }
   blknum = 0 ;
   genmd = -1;
   error += qbnd(FULL_STEP,COM_RECV);
   error += qbnd(FULL_STEP,COM_SEND);
   error += qbnd(FULL_STEP,COM_WAIT_RECV);
   TimeStepControl_initialize() ;
   for ( iblk = 0 ; iblk < nblk ; iblk++ ) {
      updateblk( &domains[iblk], 0, 0.0 ) ;
   }
 ; 
   error += qbnd(FULL_STEP,COM_WAIT_SEND);
   editor(FULL_STEP);
   genmd = 0;
   hash_optimize_all();
   return(0);
}
Beispiel #7
0
int  gen( void )
{
   char *me = "gen";
   char msg[MAXLINE];
   int i,ir,error,iblk ;
   int ibc, gblk, lblk ;
   int len ;
   int *zdx_in ;
   RGST_AttributeElem_t *func ;
   error = 0 ;
   if ( (ifcom) && (!ifparallel) ) {
      bndry_init() ;
   }
   for ( ir = 1 ; ir <= nreg ; ir++ ) {
      neosgroup = MAX( neosgroup, reg[ir].numGroups ) ;
   }
   if ( neosgroup == 1 ) {
      neosgroup = 0 ;
   }

   if ( ifvsame ) {
      vsameorg() ;
   }
   regen_reset() ;
   genmd = 1     ;
   if ( !ifparallel ) {
      initcom( NULL, 0 ) ;
   }
   if (ifcom) {
      bndry_setmomflx() ;
      bndry_zdxneighbor() ;
   }
   sewbndry() ;
   if ( ifparallel ) {
      initcombufs() ;
   }
 ;    if ( nspec > 0 ) {
      species_init() ;
   } else {
      ifdynspec = 0 ;
      ProblemArray_del("specfrac", NULL) ;
   } 
   sanityck() ;
   swapcoords() ;
   func = rgst_list_attr(A_OBJECT, "Function_Gen") ;
   while ( func != NULL ) {
      Command_t *cp = (Command_t *) func->rgst_obj->obj ;
      (*(cp->proc))() ;
      func = func->next ;
   }
   for ( iblk = 0 ; iblk < nblk ; iblk++ ) {
      error += blkgen( &domains[iblk] ) ;
   }
   if ( ifcom ) {
      comverify() ;
   }

   eos_init(1) ;
   if ( ifconvert == 0 ) {
      for ( iblk = 0 ; iblk < nblk ; iblk++ ) {
         getematblk( 1, &domains[iblk] ) ;
      } 
   } 
   TimeStepControl_initialize() ;
   error += update( 0.0, 0 ) ;
   if ( ndeltat < deltat ) {
      deltat = ndeltat ;
   }
   deltatSubcycle = deltat ;
   error += editor( FULL_STEP ) ;
   genmd = 0 ;
   hash_optimize_all();
   return(error) ;
}
Beispiel #8
0
int rdsilogrid(  void )
{
  char *me = "rdsilogrid";
  char msg[MAXLINE];
  char op[MAXLINE];
  char name[MAXLINE];
  int i;
  int gblk;
  int nlocaldom;
  int error;
  int *localdom;
  DBfile *idbid;
  Extents_t ext;
  geta(op);
  if (genmd != 1) {
     sprintf(msg, "Attempting to read silo mesh before memory has been allocated.\n\t\tAre you in merge phase?\n\t\t Did you forget the -sew on the command line?");
     ctlerror(me,msg);
  }
  comlock(dmp_nbaton);
  idbid = DBOpen (op, DB_PDB, DB_READ);
  if (idbid == NULL) {
     sprintf(msg,"Cannot open silo file %s.\n",op);
     ctlerror(me,msg);
  }
  decomp_setdir(idbid);
  decomp_read(idbid, name, 0, 0);
  error = DBSetDir(idbid,"/");
  DBShowErrors(DB_NONE, NULL);
  error = DBSetDir(idbid,"/Global/Nodelists");
  if (error != 0) error = DBSetDir(idbid,"Nodelists");
  if (error == 0) {
     NodeList_rdsilo(idbid,0);
  }
  DBShowErrors(DB_TOP, NULL);
  error = DBSetDir(idbid,"/");
  nlocaldom = 0;
  localdom = MALLOT(int,gnblk);
  for (gblk = 0; gblk < gnblk; gblk++) {
    if (gmap[gblk].lblk >= 0) {
       localdom[nlocaldom++] = gblk;
    }
  }
  calculate_mappings();
  for (i = 0; i < nlocaldom; i++) {
     gblk = localdom[i];
     if (gmap[gblk].proc == myid) {
        sprintf(op,"/%s%i",name,i);
        error = DBSetDir(idbid,op);
        TRSEXT(domains[nblk],gmap[gblk],gmap[gblk]);
        if (ndims == 2) {
           domains[nblk].kmin = 0;
           domains[nblk].kmax = 0;
           domains[nblk].type = QUAD2D;
        } else {
           domains[nblk].type = HEX3D;
        } 
        domains[nblk].sclnamix = sclnamix;
        initblk(nblk,&domains[nblk]);
        domains[nblk].gblk = gblk;
        domain_hash_tbl_rgst(&(domains[nblk]));
        CPYEXT(ext,domains[nblk]);
        rdsilomesh(idbid, "hydro_mesh", domains[nblk].x, domains[nblk].y, 
                   domains[nblk].z, domains[nblk].node, ext, domains[nblk].jp, 
                   domains[nblk].kp);
        nblk++;
        error = DBSetDir(idbid,"/");
     }
  }
  FREEMEM(localdom);
  DBClose(idbid);
  comunlock(dmp_nbaton);
  if (ifparallel) {
     bndry_init();
     initcom( NULL, 0);
     varcom_bufinit();
  }
  return(0);
}
Beispiel #9
0
int  blockin0( int type ) {
   char *me = "blockin0";
   char op[10],msg[MAXLINE];
   int cflag;
   int imax, jmax, kmax;
   int gblk;
   if (nblk >= nblkx-1) {
      sprintf(msg,"number of blocks exceeds nblkx = %d",nblkx);
      ctlwarning(me,msg);
      return(1);
   }
   if ((type == QUAD2D) && (ndims == 3)) {
      sprintf(msg,"You are specifying a 2D mesh in a 3D problem.\n\t\tYou might want to use hex instead of the quad command.");
      ctlerror(me,msg);
   }
   if ((type == HEX3D) && (ndims == 2)) {
      sprintf(msg,"You are specifying a 3D mesh in a 2D problem.\n\t\tYou might want to use quad instead of the hex command.\n\t\tOr you might want to set ndims to 3.");
      ctlerror(me,msg);
   }
   if (type == QUAD2D) {
      imax = geti(&cflag) + NPNL - 1;
      jmax = geti(&cflag) + NPNL - 1;
      domains[nblk].type = QUAD2D ;
      domains[nblk].imin = NPNL ;
      domains[nblk].jmin = NPNL ;
      domains[nblk].kmin = 0 ;
      domains[nblk].imax = imax;
      domains[nblk].jmax = jmax;
      domains[nblk].kmax = 0 ;
   }  else if (type == HEX3D) {
      imax = geti(&cflag) + NPNL - 1;
      jmax = geti(&cflag) + NPNL - 1;
      kmax = geti(&cflag) + NPNL - 1;
      domains[nblk].type = HEX3D ;
      domains[nblk].imin = NPNL ;
      domains[nblk].jmin = NPNL ;
      domains[nblk].kmin = NPNL ;
      domains[nblk].imax = imax;
      domains[nblk].jmax = jmax;
      domains[nblk].kmax = kmax;
   } else {
      sprintf(msg,"unknown block type '%s'",op);
      ctlwarning(me,msg);
      return(1);
   }
   if (ifparallel) {
       if (unblk > 1) {
         sprintf(msg,"You may not use parallel mesh generation on multi-block problems.");
         ctlerror(me,msg);
      }
      blknum = unblk ;
      domains[nblk].jp = domains[nblk].imax - domains[nblk].imin + 
                         1 + NPNL + NPNR;
      domains[nblk].kp = 0;
      if (ndims == 3) {
         domains[nblk].kp = domains[nblk].jp * (domains[nblk].jmax - 
	                    domains[nblk].jmin + 1 + NPNL + NPNR);
      }
      setumap( &domains[nblk] ) ;
      peekc(op);
      if (strcmp(op,"blkdiv")) {
         if (nblkx <= num_procs) {
            sprintf(msg,"Number of domains (%i) exceeds nblkx (%i).  Please increase nblkx.",num_procs,nblkx);
            ctlerror(me,msg);
         }
         blkdivin(1);
      } else {
         geta(op);
         blkdivin(0);
      } 
      if (nblkx <= num_procs) {
         sprintf(msg,"Number of domains (%i) exceeds nblkx (%i).  Please increase nblkx.",num_procs,nblkx);
         ctlerror(me,msg);
      }
      calculate_mappings();
      for (gblk = 0; gblk < gnblk; gblk++) {
         if (gmap[gblk].proc == myid) {
            domains[nblk].type     = type ;
            domains[nblk].sclnamix = sclnamix ;
            TRSEXT(domains[nblk],gmap[gblk],gmap[gblk]);
            if (ndims == 2) {
               domains[nblk].kmin = 0;
               domains[nblk].kmax = 0;
            } 
            initblk(nblk,&domains[nblk]);
            domains[nblk].gblk = gblk;
            domain_hash_tbl_rgst(&(domains[nblk]));  
            nblk++;
         }
      }
      if (ifparallel) {
         bndry_init();
         initcom( NULL, 0);
         varcom_bufinit();
      }
   } else {
      peekc(op);
      if (!strcmp(op,"blkdiv")) {
         sprintf(msg,"blkdiv command may only appear after quad or hex during parallel \n\t\tgeneration.");
         ctlerror(me,msg);
      }
      domains[nblk].sclnamix = sclnamix ;
      initblk( nblk, &domains[nblk] ) ;
      setumap( &domains[nblk] ) ;
      blknum = nblk ;
      nblk++ ;
   }
   return(0) ;
}