int main(int, char *[]){
    // sanity check on test matrix - should be symetrical
    check_symmetry(test_multiplication_result);
    bool rval = true;
    TEST_EACH_VALUE_PAIR
    std::cout << (rval ? "success!" : "failure") << std::endl;
    return ! rval ;
}
예제 #2
0
/*------------------------------------------------------------*/
PUBLIC void read_parameter_file(const char fname[]){
  char        *line, ident[256];
  enum parset type;
  int         r;

  if (!(fp=fopen(fname,"r"))) {
    fprintf(stderr,
            "\nread_parameter_file:\n"
            "\t\tcan't open file %s\n"
            "\t\tusing default parameters instead.\n", fname);
    return;
  }

  if (!(line = get_line(fp))) {
    fprintf(stderr," File %s is inproper.\n", fname);
    fclose(fp);
    return;
  }

  if (strncmp(line,"## RNAfold parameter file v2.0",30)!=0) {
    fprintf(stderr,
            "Missing header line in file.\n"
            "May be this file has not v2.0 format.\n"
            "Use INTERRUPT-key to stop.\n");
  }
  free(line);

  while((line=get_line(fp))) {

    r = sscanf(line, "# %255s", ident);
    if (r==1) {
      type = gettype(ident);
      switch (type){
        case QUIT:    break;
        case S:       rd_2dim(&(stack37[0][0]), NBPAIRS+1, NBPAIRS+1, 1, 1);
                      break;
        case S_H:     rd_2dim(&(stackdH[0][0]), NBPAIRS+1, NBPAIRS+1, 1, 1);
                      break;
        case HP:      rd_1dim(&(hairpin37[0]), 31, 0);
                      break;
        case HP_H:    rd_1dim(&(hairpindH[0]), 31, 0);
                      break;
        case B:       rd_1dim(&(bulge37[0]), 31, 0);
                      break;
        case B_H:     rd_1dim(&(bulgedH[0]), 31, 0);
                      break;
        case IL:      rd_1dim(&(internal_loop37[0]), 31, 0);
                      break;
        case IL_H:    rd_1dim(&(internal_loopdH[0]), 31, 0);
                      break;
        case MME:     rd_3dim(&(mismatchExt37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MME_H:   rd_3dim(&(mismatchExtdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMH:     rd_3dim(&(mismatchH37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMH_H:   rd_3dim(&(mismatchHdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI:     rd_3dim(&(mismatchI37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI_H:   rd_3dim(&(mismatchIdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI1N:   rd_3dim(&(mismatch1nI37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI1N_H: rd_3dim(&(mismatch1nIdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI23:   rd_3dim(&(mismatch23I37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMI23_H: rd_3dim(&(mismatch23IdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMM:     rd_3dim(&(mismatchM37[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case MMM_H:   rd_3dim(&(mismatchMdH[0][0][0]),
                          NBPAIRS+1, 5, 5,
                          1, 0, 0);
                      break;
        case INT11:   rd_4dim(&(int11_37[0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5,
                          1, 1, 0, 0);
                      break;
        case INT11_H: rd_4dim(&(int11_dH[0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5,
                          1, 1, 0, 0);
                      break;
        case INT21:   rd_5dim(&(int21_37[0][0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5, 5,
                          1, 1, 0, 0, 0);
                      break;
        case INT21_H: rd_5dim(&(int21_dH[0][0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5, 5,
                          1, 1, 0, 0, 0);
                      break;
        case INT22:   rd_6dim_slice(&(int22_37[0][0][0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5, 5, 5,
                          1, 1, 1, 1, 1, 1,
                          1, 1, 0, 0, 0, 0);
                      update_nst(int22_37);
                      break;
        case INT22_H: rd_6dim_slice(&(int22_dH[0][0][0][0][0][0]),
                          NBPAIRS+1, NBPAIRS+1, 5, 5, 5, 5,
                          1, 1, 1, 1, 1, 1,
                          1, 1, 0, 0, 0, 0);
                      update_nst(int22_dH);
                      break;
        case D5:      rd_2dim(&(dangle5_37[0][0]), NBPAIRS+1, 5, 1, 0);
                      break;
        case D5_H:    rd_2dim(&(dangle5_dH[0][0]), NBPAIRS+1, 5, 1, 0);
                      break;
        case D3:      rd_2dim(&(dangle3_37[0][0]), NBPAIRS+1, 5, 1, 0);
                      break;
        case D3_H:    rd_2dim(&(dangle3_dH[0][0]), NBPAIRS+1, 5, 1, 0);
                      break;
        case ML:      {
                        int values[6];
                        rd_1dim(&values[0], 6, 0);
                        ML_BASE37     = values[0];
                        ML_BASEdH     = values[1];
                        ML_closing37  = values[2];
                        ML_closingdH  = values[3];
                        ML_intern37   = values[4];
                        ML_interndH   = values[5];
                      }
                      break;
        case NIN:     {
                        int values[3];
                        rd_1dim(&values[0], 3, 0);
                        ninio37 = values[0];
                        niniodH = values[1];
                        MAX_NINIO  = values[2];
                      }
                      break;
        case MISC:    {
                        int values[4];
                        rd_1dim(&values[0], 4, 0);
                        DuplexInit37 = values[0];
                        DuplexInitdH = values[1];
                        TerminalAU37 = values[2];
                        TerminalAUdH = values[3];
                      }
                      break;
        case TL:      rd_Tetraloop37();
                      break;
        case TRI:     rd_Triloop37();
                      break;
        case HEX:     rd_Hexaloop37();
                      break;
        default:      /* do nothing but complain */
                      fprintf(stderr,"read_epars: Unknown field identifier in `%s'\n", line);
      }
    } /* else ignore line */
    free(line);
  }
  fclose(fp);

  check_symmetry();
  return;
}
예제 #3
0
파일: evolve.c 프로젝트: jzrake/m2
int m2sim_runge_kutta_substep(m2sim *m2, double dt, double rkparam)
{
  int err = 0;
  err += m2sim_calculate_gradient(m2);
  check_symmetry(m2, "A");
  err += m2sim_calculate_flux(m2); /* FAILURES: bad eigenvalues */
  check_symmetry(m2, "B");
  err += m2sim_synchronize_guard(m2); /* so that Godunov fluxes are communicated */
  check_symmetry(m2, "C");
  err += m2sim_calculate_emf(m2);
  check_symmetry(m2, "D");
  err += m2sim_exchange_flux(m2, dt);
  check_symmetry(m2, "E");
  err += m2sim_add_source_terms(m2, dt);
  check_symmetry(m2, "F");
  err += m2sim_average_runge_kutta(m2, rkparam);
  check_symmetry(m2, "G");
  err += m2sim_enforce_boundary_condition(m2);
  check_symmetry(m2, "H");
  err += m2sim_magnetic_flux_to_cell_center(m2);
  check_symmetry(m2, "I");
  err += m2sim_from_conserved_all(m2);
  check_symmetry(m2, "J");
  err += m2sim_synchronize_guard(m2);
  check_symmetry(m2, "K");
  return err;
}
예제 #4
0
/*------------------------------------------------------------*/
PUBLIC void read_parameter_file(const char fname[])
{
  char    *line, ident[32];
  enum parset type;
  int      r, changed=0;

  if (!(fp=fopen(fname,"r"))) {
    fprintf(stderr,
	    "\nread_parameter_file:\n"
	    "\t\tcan't open file %s\n"
	    "\t\tusing default parameters instead.\n", fname);
    return;
  }

  if (!(line = get_line(fp))) {
    fprintf(stderr," File %s is inproper.\n", fname);
    fclose(fp);
    return;
  }

  if (strncmp(line,"## RNAfold parameter file",25)!=0) {
    fprintf(stderr,
	    "Missing header line in file.\n"
	    "May be this file has incorrect format.\n"
	    "Use INTERRUPT-key to stop.\n");
  }
  free(line);
  
  while((line=get_line(fp))) {
    
    r = sscanf(line, "# %31s", ident);
    if (r==1) {
      type = gettype(ident);
      switch (type)
	{
	case QUIT: break;
	case SH:     rd_stacks(enthalpies);    changed |= SH; break;
	case S:      rd_stacks(stack37);       changed |= S;  break;
	case HP:     rd_loop(hairpin37);       changed |= HP; break;
	case B:      rd_loop(bulge37);         changed |= B;  break;
	case IL:     rd_loop(internal_loop37); changed |= IL; break;
	case MMH:    rd_mismatch(mismatchH37); changed |= MMH; break;
	case MMI:    rd_mismatch(mismatchI37); changed |= MMI; break;
	case MMM:    rd_mismatch(mismatchM37); changed |= MMM; break;
	case MM_H:   rd_mismatch(mism_H);      changed |= MM_H; break;
	case INT11:  rd_int11(int11_37);       changed |= INT11; break;
	case INT11_H:rd_int11(int11_H);        changed |= INT11_H; break;
	case INT21:  rd_int21(int21_37);       changed |= INT21; break;
	case INT21_H:rd_int21(int21_H);        changed |= INT21_H; break;
	case INT22:  rd_int22(int22_37);       changed |= INT22; break;
	case INT22_H:rd_int22(int22_H);        changed |= INT22_H; break;
	case DE5:    rd_dangle(dangle5_37);    changed |= DE5;  break;
	case DE5_H:  rd_dangle(dangle5_H);     changed |= DE5_H;  break;
	case DE3:    rd_dangle(dangle3_37);    changed |= DE3; break;
	case DE3_H:  rd_dangle(dangle3_H);     changed |= DE3_H; break;
	case ML:     rd_MLparams();	       changed |= ML;  break;
	case NIN:    rd_ninio();	       changed |= NIN; break;
	case TL:     rd_Tetra_loop();          changed |= TL; break;
	case TRI:    rd_Tri_loop();            changed |= TRI; break;
	case MISC:   rd_misc();                changed |= MISC; break;
	  
	default: /* maybe it's a temperature */
	  r=sscanf(ident, "%f", &rtemp);
	  if (r!=1) fprintf(stderr," Unknown field identifier in `%s'\n", line);
	}
    } /* else ignore line */
    free(line);  
  }
  
  fclose(fp);

  check_symmetry();
  return;
}