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 ; }
/*------------------------------------------------------------*/ 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; }
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; }
/*------------------------------------------------------------*/ 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; }