void TestTableWeightingSet::TestCalcFloodThreshold() { ComparisonContext cContext; { CRTF_Table tbl1(&cContext, Detached); CRTF_Table tbl2(&cContext, Detached); tbl1.SetSize(3,2); tbl1.FillMissingTableCellsWithDummys(); tbl1.m_iRealCellCount = 6; tbl2.SetSize(3,2); tbl2.FillMissingTableCellsWithDummys(); tbl2.m_iRealCellCount = 6; CRtfDocumentChainBuilder host; CTableWeightingSet_CRTF_Table tblset(&host, tbl1, tbl2); assertTest(tblset.FloodStackThreshold() == 3); } { CRTF_Table tbl1(&cContext, Detached); CRTF_Table tbl2(&cContext, Detached); tbl1.SetSize(1,1); tbl1.FillMissingTableCellsWithDummys(); tbl1.m_iRealCellCount = 1; tbl2.SetSize(1,1); tbl2.FillMissingTableCellsWithDummys(); tbl2.m_iRealCellCount = 1; CRtfDocumentChainBuilder host; CTableWeightingSet_CRTF_Table tblset(&host, tbl1, tbl2); assertTest(tblset.FloodStackThreshold() == 2); } { CRTF_Table tbl1(&cContext, Detached); CRTF_Table tbl2(&cContext, Detached); tbl1.SetSize(5,5); tbl1.FillMissingTableCellsWithDummys(); tbl1.m_iRealCellCount = 25; tbl2.SetSize(6,7); tbl2.FillMissingTableCellsWithDummys(); tbl1.m_iRealCellCount = 42; CRtfDocumentChainBuilder host; CTableWeightingSet_CRTF_Table tblset(&host, tbl1, tbl2); assertTest(tblset.FloodStackThreshold() == 4); } }
void CalcER1() { /* for(int i=0;i<psd.size();i++) printf("\n%g ",nearest_epr(psd[i].fl.d)); return;*/ float d0 = 0.01f; float d1 = 0.5f; float d_step = 0.04f; int it_num = int((d1-d0)/d_step); int opers_left,opers_total; double start = glfwGetTime ( ); int psd_num = 3;//psd.size(); opers_left =opers_total= it_num*psd_num; float *Vas=new float[it_num*psd_num]; float *Ver=new float[it_num*psd_num]; memset(Vas,0,it_num*sizeof(float)*psd_num); memset(Ver,0,it_num*sizeof(float)*psd_num); float *Vas1=new float[it_num]; float *Ver1=new float[it_num]; memset(Vas1,0,it_num*sizeof(float)); memset(Ver1,0,it_num*sizeof(float)); float cur_d; for(int psd_id=0;psd_id<psd_num;psd_id++) { float offset=nearest_geoms(4,psd[psd_id].fl.d); cur_d=d0; for(int i=0;i<it_num;i++) { float perS_astr,perS_epr; CalcMonteEPR_as(psd[psd_id].fl.d,cur_d+offset,perS_astr,perS_epr); opers_left--; Vas1[i] = perS_astr; Ver1[i] = perS_epr; Vas[i+psd_id*it_num] = Vas1[i]; Ver[i+psd_id*it_num] = Ver1[i]; cur_d += d_step; int sc=((opers_left)*(glfwGetTime ( )-start)/(opers_total-opers_left))/60; printf("%dpsd %dit %d% %d:%d %g\n",psd_id,opers_left,(opers_left*100)/opers_total,sc/60,sc%60,perS_astr); } } //} // Table tbl1(it_num+1,1+3*psd_num); tbl1.SetValue("Distance",0,0); for(int i=0;i<psd_num;i++) { tbl1.SetValue("%Vas"+str::ToString(i),0,i+1); tbl1.SetValue("%Ver"+str::ToString(i),0,i+1+psd_num); tbl1.SetValue("Ver/Vas"+str::ToString(i),0,i+1+psd_num*2); } { float cur_d = d0; for(int i=0;i<it_num;i++) { tbl1.SetValue(str::ToString(int((cur_d+0.0001f)*1000))+"nm",i+1,0); cur_d += d_step; } } for(int i=0;i<psd_num;i++) for(int j=0;j<it_num;j++) { tbl1.SetValue(Vas[j+i*it_num],j+1,i+1); tbl1.SetValue(Ver[i+i*it_num],j+1,i+1+psd_num); if(Vas[i+i*it_num])tbl1.SetValue(Ver[i+i*it_num]/Vas[i+i*it_num],j+1,i+1+psd_num*2); } tbl1.StoreToFile("results\\ER_central.txt"); // delete[]Vas; delete[]Ver; delete[]Vas1; delete[]Ver1; }
void CalcER() { //*' Table tbl0(2,54); tbl0.SetValue("nearest_astr",0,0); tbl0.SetValue("nearest_epr",1,0); for(int i=0;i<psd.size();i++) { tbl0.SetValue(nearest_geoms(0,psd[i].fl.d),0,1+i); tbl0.SetValue(nearest_geoms(4,psd[i].fl.d),1,1+i); } tbl0.StoreToFile("distances.txt"); return;// */ float d0 = 0.01f; float d1 = 2.5f; float d_step = 0.01f; int it_num = int((d1-d0)/d_step); int opers_left,opers_total; double start = glfwGetTime ( ); int psd_num = psd.size(); opers_left =opers_total= it_num*psd_num; float *Vas=new float[it_num*psd_num]; float *Ver=new float[it_num*psd_num]; memset(Vas,0,it_num*sizeof(float)*psd_num); memset(Ver,0,it_num*sizeof(float)*psd_num); float *Vas1=new float[it_num]; float *Ver1=new float[it_num]; memset(Vas1,0,it_num*sizeof(float)); memset(Ver1,0,it_num*sizeof(float)); float cur_d; Geometry *gg0 = new Geometry(),*gg = new Geometry(); Geometry*gs = new Geometry(); for(int psd_id=0;psd_id<psd_num;psd_id++) { float offset=0;//nearest_epr(psd[psd_id].fl.d); cur_d=d0+offset; gs->renull(); AddSphere(gs,d1+d_step+offset,40,40); mat34 mt(12,vec3(1).normalized()); gs->Transform(mt); gs->Move(psd[psd_id].fl.d); gs->RebuildTrBB(); gs->RebuildTrBB2(); gg0->renull(); for(int as=0;as<2;as++) { GetSection(gs,&neuron[0][as],gg0,1,0); GetSection(&neuron[0][as],gs,gg0,1,0); } gg0->RebuildTrBB(); gg0->RebuildTrBB2(); for(int i=0;i<it_num;i++) { gg->renull(); gs->renull(); AddSphere(gs,cur_d,40,40); mat34 mt(12,vec3(1).normalized()); gs->Transform(mt); gs->Move(psd[psd_id].fl.d); gs->RebuildTrBB(); gs->RebuildTrBB2(); GetSection(gs,gg0,gg,1,0,0); float ss = gg->CalcArea(); float ss1=0; for(int as_id=0;as_id<2;as_id++) for(int ii=0;ii<CD_depo[as_id].size();ii++) { Geometry* g_er = &neuron[4][CD_depo[as_id][ii]]; if(!g_er->tr.size())continue; gg->renull(); GetSection(gs,g_er,gg,1,0,0); ss1 += gg->CalcArea()*g_er->color.y; } opers_left--; Vas1[i] = ss/(4*PI*cur_d*cur_d); Ver1[i] = ss1/(4*PI*cur_d*cur_d); Vas[i+psd_id*it_num] = Vas1[i]; Ver[i+psd_id*it_num] = Ver1[i]; cur_d += d_step; int sc=((opers_left)*(glfwGetTime ( )-start)/(opers_total-opers_left))/60; //printf("%dpsd %dit %d% %d:%d\n",psd_id,opers_left,(opers_left*100)/opers_total,sc/60,sc%60); printf("%dpsd %dit %g %g\n",psd_id,opers_left,ss,ss1); } } //} // Table tbl1(it_num+1,1+3*psd_num); tbl1.SetValue("Distance",0,0); for(int i=0;i<psd_num;i++) { tbl1.SetValue("%Vas"+str::ToString(i),0,i+1); tbl1.SetValue("%Ver"+str::ToString(i),0,i+1+psd_num); tbl1.SetValue("Ver/Vas"+str::ToString(i),0,i+1+psd_num*2); } { float cur_d = d0; for(int i=0;i<it_num;i++) { tbl1.SetValue(str::ToString(int((cur_d+0.0001f)*1000))+"nm",i+1,0); cur_d += d_step; } } for(int i=0;i<psd_num;i++) for(int j=0;j<it_num;j++) { tbl1.SetValue(Vas[j+i*it_num],j+1,i+1); tbl1.SetValue(Ver[j+i*it_num],j+1,i+1+psd_num); if(Vas[j+i*it_num])tbl1.SetValue(Ver[j+i*it_num]/Vas[j+i*it_num],j+1,i+1+psd_num*2); } tbl1.StoreToFile("results\\ER_central.txt"); // delete gg; delete gg0; delete gs; delete[]Vas; delete[]Ver; delete[]Vas1; delete[]Ver1; }