| 2698 | } // for triangle |
| 2699 | |
| 2700 | st << "Q\n"; |
| 2701 | |
| 2702 | return; |
| 2703 | } |
| 2704 | |
| 2705 | void plot_P2_isoline( std::stringstream &Content, const Fem2D::Mesh &Th, const KN<double> &f_P2_, |
| 2706 | const KNM<double> &palette, |
| 2707 | const int sizex, const int sizey, const double scale, const double ar, |
| 2708 | const double x0, const double y0, const double y1, |
| 2709 | const int marginl, const int marginb, |
| 2710 | const double textfontsize, const bool monochrome, |
| 2711 | const bool legend, const int prec, const bool logscale, |
| 2712 | const double withmesh, |
| 2713 | const int NISOLINES, const KN<double>*const viso, |
| 2714 | const double linewidth ) |
| 2715 | { |
| 2716 | const double EPS = 1e-10; |
| 2717 | |
| 2718 | //------------------------------ |
| 2719 | // values to plot |
| 2720 | //------------------------------ |
| 2721 | const double fmax = (viso)? viso->max(): f_P2_.max(); |
| 2722 | const double fmin = (viso)? viso->min(): f_P2_.min(); |
| 2723 | std::vector<double> isoline_val; |
| 2724 | |
| 2725 | find_isoline_values( isoline_val, fmax, fmin, NISOLINES, viso, logscale ); |
| 2726 | |
| 2727 | // color/gray-scale range to plot |
| 2728 | #if 1 |
| 2729 | // If user specifies an irrelevant color range (in viso array), |
| 2730 | // we do not take care of it. |
| 2731 | const double cmax = *max_element( isoline_val.begin(), isoline_val.end() ); |
| 2732 | const double cmin = *min_element( isoline_val.begin(), isoline_val.end() ); |
| 2733 | #else |
| 2734 | // map color/grayscale range to function values |
| 2735 | const double cmax = fmax; |
| 2736 | const double cmin = fmin; |
| 2737 | #endif |
| 2738 | |
| 2739 | std::stringstream &st = Content; |
| 2740 | st.str(""); |
| 2741 | |
| 2742 | if( 0 < withmesh ) |
| 2743 | overlayMesh( st, Th, withmesh, scale, ar, x0, y0, marginl, marginb ); |
| 2744 | |
| 2745 | plot_P2_isoline_body( st, Th, f_P2_, isoline_val, cmin, cmax, palette, scale, ar, x0, y0, |
| 2746 | marginl, marginb, monochrome, logscale, NISOLINES, linewidth ); |
| 2747 | |
| 2748 | if( legend ) |
| 2749 | drawLegend_contour( st, isoline_val, prec, palette, cmin, cmax, |
| 2750 | monochrome, logscale, sizex, textfontsize, scale, |
| 2751 | y1, y0, marginl, marginb); |
| 2752 | |
| 2753 | drawBoundary( st, Th, scale, ar, x0, y0, marginl, marginb ); |
| 2754 |
no test coverage detected