Example #1
0
void nemo_main()
{
  int n;

  stream parstr, outstr;
  string molfile = getparam("mol");
  string outfile = getparam("out");
  string outdir  = getparam("outdir");
  string exefile = "radex";
  string datfile = "mol.dat";
  string parfile = "input.txt";
  string logfile = "radex.txt";
  char dname[256], cmd[256];

  real  fmin = getdparam("fmin");
  real  fmax = getdparam("fmax");
  real  tkin = getdparam("tkin");

  int   npartner;
  string *partner;
  real  density[MAXPARTNER];

  real  tbg = getdparam("tbg");
  real  cdmol = getdparam("cdmol");
  real  deltav = getdparam("deltav");

  partner = burststring(getparam("partner"),",");
  npartner = xstrlen(partner,sizeof(string))-1;
  if (npartner < 1 || npartner>MAXPARTNER) error("too few/many partners");
  n = nemoinpr(getparam("density"),density,MAXPARTNER);
  if (n != npartner) error("need matching numbers for partner= and density=");

  run_mkdir(outdir);
  sprintf(dname,"%s/%s",outdir,parfile);

  parstr = stropen(dname,"w");

  fprintf(parstr,"%s\n",molfile);
  fprintf(parstr,"%s\n",outfile);
  fprintf(parstr,"%g %g\n",fmin,fmax);
  fprintf(parstr,"%g\n",tkin);
  fprintf(parstr,"%d\n",npartner);
  for (n=0; n<npartner; n++) {
    fprintf(parstr,"%s\n",partner[n]);
    fprintf(parstr,"%g\n",density[n]);
  } 
  fprintf(parstr,"%g\n",tbg);
  fprintf(parstr,"%g\n",cdmol);
  fprintf(parstr,"%g\n",deltav);
  fprintf(parstr,"0\n");

  strclose(parstr);

  run_cd(outdir);
  sprintf(cmd,"%s < %s > %s ", exefile, parfile, logfile);
  run_sh(cmd);
}
Example #2
0
nemo_main()
{
  string exefile = getparam("exe");
  string rundir  = getparam("outdir");
  string infile  = "bulgerot.in";
  string datfile = "bulgerot.dat";
  string logfile = "bulgerot.log";
  real r[3];
  int n;
  char dname[256];
  static char *cmd = "#! /bin/sh\n"             /* the lines for the "runme" */
                     "%s < %s >%s 2>&1\n";      /* script inside the rundir  */
  stream datstr;
  
  n = nemoinpr(getparam("r3"),r,3);
  if (n!=3) error("parsing error %s: r3 needs rmin,rstep,nradii",getparam("r3"));
  n = r[2];

  run_mkdir(rundir);
  sprintf(dname,"%s/%s",rundir,infile);
  datstr = stropen(dname,"w");
  fprintf(datstr,"%s\n",datfile);
  fprintf(datstr,"%s\n",getparam("galaxy"));
  fprintf(datstr,"%g %g %g\n",
	  getrparam("mu0"),getrparam("r0"),getrparam("n"));
  fprintf(datstr,"%g %g %g %g\n",
	  getrparam("inc"),getrparam("q"),1e6*getrparam("dist"),getrparam("ar"));
  fprintf(datstr,"%g %g %d\n",r[0],r[1],n);
  strclose(datstr);

  sprintf(dname,"%s/%s",rundir,"runme");
  datstr = stropen(dname,"w");
  dprintf(1,     cmd,exefile,infile,logfile);
  fprintf(datstr,cmd,exefile,infile,logfile);
  strclose(datstr);

  run_cd(rundir);
  if (run_sh("sh runme"))
    error("Problem executing runme in %s",rundir);
}
Example #3
0
nemo_main()
{
    int nbody, nfix, nrand, nnbmax, nrun, kstart;
    real etai, etar, rs0, deltat, tcrit, qe, eps, tcomp;
    int k, nkz, kz[KZ_MAX];
    real alphas, body1, bodyn;
    real q, vxrot, vzrot, rbar, zmbar;
    string exefile = "nbody2";
    string parfile = "nbody2.in";
    string rundir = getparam("outdir");
    string infile, fname;
    char dname[256], runcmd[256];
    stream datstr, histr;

    kstart = getiparam("kstart");
    tcomp =  getdparam("tcomp");

    nbody = getiparam("nbody");
    nfix = getiparam("nfix");
    nrand = getiparam("nrand");
    nnbmax = getiparam("nnbmax");
    nrun = getiparam("nrun");

    etai = getdparam("etai");
    etar = getdparam("etar");
    rs0 = getdparam("rs0");
    deltat = getdparam("deltat");
    tcrit = getdparam("tcrit");
    qe = getdparam("qe");
    eps = getdparam("eps");

    nkz = nemoinpi(getparam("kz"),kz,20);
    if (nkz < 0) error("%d Syntax error kz=%s",nkz,getparam("kz"));
    for (k=nkz; k<KZ_MAX; k++) kz[k]=0;
    for (k=0; k<KZ_MAX; k++) dprintf(1,"%d ",kz[k]);
    dprintf(1,"\n");

    alphas = getdparam("alphas");
    body1 = getdparam("body1");
    bodyn = getdparam("bodyn");

    q = getdparam("q");
    vxrot = getdparam("vxrot");
    vzrot = getdparam("vzrot");
    rbar = getdparam("rbar");
    zmbar = getdparam("zmbar");

    infile = getparam("in");
    fname = fullname(infile);

    run_mkdir(rundir);

    sprintf(dname,"%s/%s",rundir,parfile);
    datstr = stropen(dname,"w");    

    /*  New Run */

  if (kstart == 1) {

    fprintf(datstr,"%d %g\n",kstart,tcomp);
    fprintf(datstr,"%d %d %d %d %d\n",nbody,nfix,nrand,nnbmax,nrun);
    fprintf(datstr,"%g %g %g %g %g %g %g\n",etai,etar,rs0,deltat,tcrit,qe,eps);

    for (k=0; k<KZ_MAX; k++) fprintf(datstr,"%d ",kz[k]);
    fprintf(datstr,"\n");

    if (kz[KZ_EXT-1] > 0) {           /* external potential parameters */
        if (kz[KZ_EXT-1]==1)
            fprintf(datstr,"%g %g\n",getdparam("xtpar1"),getdparam("xtpar2"));
        else
            fprintf(datstr,"%g %g\n",getdparam("zmgas"),getdparam("rgas"));
    }
            
    fprintf(datstr,"%g %g %g\n",alphas,body1,bodyn);
    fprintf(datstr,"%g %g %g %g %g\n",q,vxrot,vzrot,rbar,zmbar);

    if (kz[KZ_MER-1] > 0)
        fprintf(datstr,"%g %g\n",getdparam("xcm"), getdparam("ecc"));
    strclose(datstr);

    run_cd(rundir);
    histr = stropen("history","w");
    put_history(histr);
    strclose(histr);

    if (hasvalue("in")) {
	if (*infile == '-') {		/* do something special for pipes */
	  sprintf(runcmd,"stou4 %s",infile);
	} else {
	  sprintf(runcmd,"stou4 %s nbody=%d",fname,nbody);
        } 
        dprintf(0,"%s\n",runcmd);
        if (run_sh(runcmd)) error("Error converting input data");
    }

    sprintf(runcmd,"%s < %s",exefile,parfile);
    run_sh(runcmd);
  } else {
    error("kstart=%d not yet supported",kstart);
  }
}
Example #4
0
int server_start(server_t *s)
{
	if (!getuid())
	{
		uid_t uid = 0;
		gid_t gid = 0;

		run_user(s, &uid, &gid);
		run_group(s, &gid);

		// runtime data directory
		if (run_mkdir(JOURNAL_RUNDIR) < 0)
		{
			log_error("Failed to create '%s' directory: %m", JOURNAL_RUNDIR);
			return -1;
		}

		if (chown(JOURNAL_RUNDIR, uid, gid) < 0)
		{
			log_error("Unable to change owner “%s” directory to %s(%s): %m", JOURNAL_RUNDIR, s->runuser, s->rungroup);
			return -1;
		}

		syslog_run(s);

		// variable data directory
		if (run_mkdir(JOURNAL_LOGDIR) < 0)
			log_warning("Failed to create '%s' directory: %m", JOURNAL_LOGDIR);
		else
		{
			if (errno != EEXIST && chown(JOURNAL_LOGDIR, uid, gid) < 0)
				log_warning("Unable to change owner “%s” directory to %s(%s): %m", JOURNAL_LOGDIR, s->runuser, s->rungroup);
		}

		// change user and group of process
		if (gid > 0 && run_chgroup(gid) < 0)
		{
			log_error("Unable change group to “%s”: %m", s->rungroup);
			return -1;
		}

		if (uid > 0 && run_chuser(uid) < 0)
		{
			log_error("Unable change user to “%s”: %m", s->runuser);
			return -1;
		}
	}

	if (epollfd_create(&s->epoll) < 0)
	{
		log_error("Failed to create event loop: %m");
		return -1;
	}

	s->msg = msg_new(LINE_MAX);
	if (!s->msg)
		return -1;

	seqnum_load(JOURNAL_RUNDIR "/kernel-seqnum", &s->kseqnum);

	if (hostname_open(s) < 0)
		return -1;

	boot_get_id(&s->boot_id);

	return 0;
}