MCPcopy Create free account
hub / github.com/FreeFem/FreeFem-sources / find_isoline_values

Function find_isoline_values

plugin/seq/plotPDF.cpp:970–1007  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

968
969 return;
970}
971
972void find_isoline_values( std::vector<double> &isoline_val, const double fmax, const double fmin,
973 const int NISOLINES, const KN<double>*const viso, const bool logscale )
974{
975 if( viso ){
976
977 for(int m = 0; m < viso->size(); m++)
978 isoline_val.push_back( (*viso)[m] );
979
980 } else if( logscale && (fmin > 0) ) {
981
982 // fmin * step^N = fmax <=> step^N = fmax/fmin
983 // <=> N = log_{step}(fmax/fmin) = (log(fmax/fmin))/log(step)
984 // <=> log(step) = (1/N)(log(fmax/fmin))
985 // <=> step = exp( (1/N)(log(fmax/fmin)) )
986 const double df = exp( (static_cast<double>(1)/NISOLINES)*(log(fmax/fmin)) );
987
988 isoline_val.push_back( fmin*sqrt(df) );
989 for(int m = 1; m < NISOLINES; m++)
990 isoline_val.push_back( isoline_val[m-1] * df );
991
992 } else {
993
994 if( logscale )
995 std::cout << "plotPDF(): logscale for non-positive values.\n";
996
997#if 1
998 const double df = (fmax - fmin) / NISOLINES;
999 for(int m = 0; m < NISOLINES; m++)
1000 isoline_val.push_back( fmin + df/2 + m*df );
1001#else
1002 const double df = (fmax - fmin) / (NISOLINES+1);
1003 for(int m = 0; m < NISOLINES; m++)
1004 isoline_val.push_back( fmin + (m+1)*df );
1005#endif
1006 }
1007
1008 return;
1009}
1010

Callers 2

plot_P1_isolineFunction · 0.85
plot_P2_isolineFunction · 0.85

Calls 5

expFunction · 0.50
logFunction · 0.50
sqrtFunction · 0.50
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected