150 if ( !
gc.testElementGraphicActivity(
this) ) {
155 EASValsSetFillStyle(FILL_SOLID);
163 for ( j = 0; j < 4; j++ ) {
168 sign [ 0 ].
at(1) = 1;
169 sign [ 0 ].
at(2) = 1;
170 sign [ 1 ].
at(1) = -1;
171 sign [ 1 ].
at(2) = 1;
172 sign [ 2 ].
at(1) = -1;
173 sign [ 2 ].
at(2) = -1;
174 sign [ 3 ].
at(1) = 1;
175 sign [ 3 ].
at(2) = -1;
180 indx =
gc.giveIntVarIndx();
182 StructuralElementEvaluator :: computeVectorOf(VM_Total, tStep, u);
186 span = iRule->giveKnotSpan();
189 int i, j, k, nseg = 4;
190 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
191 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
192 for ( i = 1; i <= nseg; i++ ) {
193 for ( j = 1; j <= nseg; j++ ) {
194 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
195 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
196 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
197 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
198 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
199 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
200 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
201 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
203 for ( k = 0; k < 4; k++ ) {
205 p [ k ].x = ( FPNum ) cg [ k ].at(1);
206 p [ k ].y = ( FPNum ) cg [ k ].at(2);
209 #ifdef QUARTER_PLATE_WITH_HOLE_SINGLE_PATCH
211 if ( c [ k ].at(1) > 0.99999 && c [ k ].at(2) > 0.495 && c [ k ].at(2) < 0.505 ) {
212 c [ k ].
at(1) += sign [ k ].
at(1) * du / 10.0;
213 c [ k ].
at(2) += sign [ k ].
at(2) * dv / 10.0;
214 c [ k ].
at(3) += sign [ k ].
at(3) * dw / 10.0;
219 GaussPoint gp(iRule.get(), 999, c [ k ], 1.0, _PlaneStress);
220 #ifdef COMPUTE_STRAIN
223 #ifdef COMPUTE_STRESS
228 s [ k ] = val.
at(indx);
231 if ( ( std::isnan(s [ 0 ]) ) || ( std::isnan(s [ 1 ]) ) || ( std::isnan(s [ 2 ]) ) || ( std::isnan(s [ 3 ]) ) ) {
235 if ( ( fabs(s [ 0 ]) > 1.e5 ) || ( fabs(s [ 1 ]) > 1.e5 ) || ( fabs(s [ 2 ]) > 1.e5 ) || ( fabs(s [ 3 ]) > 1.e5 ) ) {
241 go = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
242 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
243 EGAttachObject(go, ( EObjectP )
this);
244 EMAddGraphicsToModel(ESIModel(), go);
261 if ( !
gc.testElementGraphicActivity(
this) ) {
266 EASValsSetFillStyle(FILL_SOLID);
267 EASValsSetEdgeFlag(
true);
275 for ( j = 0; j < 4; j++ ) {
280 sign [ 0 ].
at(1) = 1;
281 sign [ 0 ].
at(2) = 1;
282 sign [ 1 ].
at(1) = -1;
283 sign [ 1 ].
at(2) = 1;
284 sign [ 2 ].
at(1) = -1;
285 sign [ 2 ].
at(2) = -1;
286 sign [ 3 ].
at(1) = 1;
287 sign [ 3 ].
at(2) = -1;
292 indx =
gc.giveIntVarIndx();
294 StructuralElementEvaluator :: computeVectorOf(VM_Total, tStep, u);
300 span = iRule->giveKnotSpan();
303 int i, j, k, nseg = 8;
304 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
305 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
306 for ( i = 1; i <= nseg; i++ ) {
307 for ( j = 1; j <= nseg; j++ ) {
308 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
309 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
310 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
311 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
312 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
313 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
314 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
315 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
317 for ( k = 0; k < 4; k++ ) {
319 p [ k ].x = ( FPNum ) cg [ k ].at(1);
320 p [ k ].y = ( FPNum ) cg [ k ].at(2);
324 if ( c [ k ].at(1) > 0.99999 && c [ k ].at(2) > 0.495 && c [ k ].at(2) < 0.505 ) {
325 c [ k ].
at(1) += sign [ k ].
at(1) * du / 10.0;
326 c [ k ].
at(2) += sign [ k ].
at(2) * dv / 10.0;
330 GaussPoint gp(iRule.get(), 999, c [ k ], 1.0, _PlaneStress);
331 #ifdef COMPUTE_STRAIN
334 #ifdef COMPUTE_STRESS
339 s [ k ] = val.
at(indx);
341 #ifdef QUARTER_PLATE_WITH_HOLE
343 if ( cg [ k ].at(1) <= 1.0 + 1.0e-10 && cg [ k ].at(2) <= 1.0e-10 ) {
344 fprintf(stderr,
"A: syy = %e\n", s [ k ]);
348 if ( cg [ k ].at(1) <= 1.0e-10 && cg [ k ].at(2) <= 1.0 + 1.0e-10 ) {
349 fprintf(stderr,
"B: sxx = %e\n", s [ k ]);
353 double x, y, r, phi, rate,
E, G, kap, ny;
369 s [ k ] = 0.5 * ( 2.0 + 3.0 * rate * rate * cos(4.0 * phi) - rate * ( 3 * cos(2.0 * phi) + 2.0 * cos(4.0 * phi) ) );
372 s [ k ] = 0.5 * ( -3.0 * rate * rate * cos(4.0 * phi) - rate * ( cos(2.0 * phi) - 2.0 * cos(4.0 * phi) ) );
375 s [ k ] = 0.5 * ( 3.0 * rate * rate * sin(4.0 * phi) - rate * ( sin(2.0 * phi) + 2.0 * sin(4.0 * phi) ) );
379 if ( cg [ k ].at(1) <= 1.0 + 1.0e-10 && cg [ k ].at(2) <= 1.0e-10 ) {
380 fprintf(stderr,
"A: syy = %e\n", s [ k ]);
384 if ( cg [ k ].at(1) <= 1.0e-10 && cg [ k ].at(2) <= 1.0 + 1.0e-10 ) {
385 fprintf(stderr,
"B: sxx = %e\n", s [ k ]);
393 G =
E / ( 2.0 * ( 1.0 + ny ) );
394 kap = ( 3.0 - ny ) / ( 1.0 + ny );
397 s [ k ] = ( r * ( kap + 1.0 ) * cos(phi) + 2.0 * rate * ( ( 1.0 + kap ) * cos(phi) + cos(3.0 * phi) ) - 2.0 * rate * rate * rate * cos(3.0 * phi) ) / ( 8.0 * G );
400 s [ k ] = ( r * ( kap - 3.0 ) * sin(phi) + 2.0 * rate * ( ( 1.0 - kap ) * sin(phi) + sin(3.0 * phi) ) - 2.0 * rate * rate * rate * sin(3.0 * phi) ) / ( 8.0 * G );
404 if ( cg [ k ].at(1) <= 1.0 + 1.0e-10 && cg [ k ].at(2) <= 1.0e-10 ) {
405 fprintf(stderr,
"A: ux = %e\n", s [ k ]);
409 if ( cg [ k ].at(1) <= 1.0e-10 && cg [ k ].at(2) <= 1.0 + 1.0e-10 ) {
410 fprintf(stderr,
"B: uy = %e\n", s [ k ]);
415 if ( s [ k ] < mins ) {
418 if ( s [ k ] > maxs ) {
424 if ( ( std::isnan(s [ 0 ]) ) || ( std::isnan(s [ 1 ]) ) || ( std::isnan(s [ 2 ]) ) || ( std::isnan(s [ 3 ]) ) ) {
428 if ( ( fabs(s [ 0 ]) > 1.e5 ) || ( fabs(s [ 1 ]) > 1.e5 ) || ( fabs(s [ 2 ]) > 1.e5 ) || ( fabs(s [ 3 ]) > 1.e5 ) ) {
434 go = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
435 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
436 EGAttachObject(go, ( EObjectP )
this);
437 EMAddGraphicsToModel(ESIModel(), go);
443 #ifdef QUARTER_PLATE_WITH_HOLE
444 fprintf(stderr,
"%d: %e %e %e %e\n", indx, mins, maxs, ( 10.0 * mins + maxs ) / 11.0, ( 10.0 * maxs + mins ) / 11.0);
463 if ( !
gc.testElementGraphicActivity(
this) ) {
468 EASValsSetFillStyle(FILL_SOLID);
469 EASValsSetEdgeFlag(
true);
477 for ( j = 0; j < 4; j++ ) {
482 sign [ 0 ].
at(1) = 1;
483 sign [ 0 ].
at(2) = 1;
484 sign [ 1 ].
at(1) = -1;
485 sign [ 1 ].
at(2) = 1;
486 sign [ 2 ].
at(1) = -1;
487 sign [ 2 ].
at(2) = -1;
488 sign [ 3 ].
at(1) = 1;
489 sign [ 3 ].
at(2) = -1;
494 indx =
gc.giveIntVarIndx();
496 StructuralElementEvaluator :: computeVectorOf(VM_Total, tStep, u);
500 span = iRule->giveKnotSpan();
503 int i, j, k, nseg = 4;
504 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
505 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
506 for ( i = 1; i <= nseg; i++ ) {
507 for ( j = 1; j <= nseg; j++ ) {
508 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
509 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
510 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
511 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
512 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
513 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
514 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
515 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
517 for ( k = 0; k < 4; k++ ) {
519 p [ k ].x = ( FPNum ) cg [ k ].at(1);
520 p [ k ].y = ( FPNum ) cg [ k ].at(2);
523 #ifdef QUARTER_PLATE_WITH_HOLE_SINGLE_PATCH
525 if ( c [ k ].at(1) > 0.99999 && c [ k ].at(2) > 0.495 && c [ k ].at(2) < 0.505 ) {
526 c [ k ].
at(1) += sign [ k ].
at(1) * du / 10.0;
527 c [ k ].
at(2) += sign [ k ].
at(2) * dv / 10.0;
532 GaussPoint gp(iRule.get(), 999, c [ k ], 1.0, _PlaneStress);
533 #ifdef COMPUTE_STRAIN
536 #ifdef COMPUTE_STRESS
541 s [ k ] = val.
at(indx);
544 if ( ( std::isnan(s [ 0 ]) ) || ( std::isnan(s [ 1 ]) ) || ( std::isnan(s [ 2 ]) ) || ( std::isnan(s [ 3 ]) ) ) {
548 if ( ( fabs(s [ 0 ]) > 1.e5 ) || ( fabs(s [ 1 ]) > 1.e5 ) || ( fabs(s [ 2 ]) > 1.e5 ) || ( fabs(s [ 3 ]) > 1.e5 ) ) {
554 go = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
555 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
556 EGAttachObject(go, ( EObjectP )
this);
557 EMAddGraphicsToModel(ESIModel(), go);
576 if ( !
gc.testElementGraphicActivity(
this) ) {
581 EASValsSetFillStyle(FILL_SOLID);
582 EASValsSetEdgeFlag(
true);
590 for ( j = 0; j < 8; j++ ) {
596 sign [ 0 ].
at(1) = 1;
597 sign [ 0 ].
at(2) = 1;
598 sign [ 0 ].
at(3) = 1;
599 sign [ 1 ].
at(1) = -1;
600 sign [ 1 ].
at(2) = 1;
601 sign [ 1 ].
at(3) = 1;
602 sign [ 2 ].
at(1) = -1;
603 sign [ 2 ].
at(2) = -1;
604 sign [ 2 ].
at(3) = 1;
605 sign [ 3 ].
at(1) = 1;
606 sign [ 3 ].
at(2) = -1;
607 sign [ 3 ].
at(3) = 1;
608 sign [ 4 ].
at(1) = 1;
609 sign [ 4 ].
at(2) = 1;
610 sign [ 4 ].
at(3) = -1;
611 sign [ 5 ].
at(1) = -1;
612 sign [ 5 ].
at(2) = 1;
613 sign [ 5 ].
at(3) = -1;
614 sign [ 6 ].
at(1) = -1;
615 sign [ 6 ].
at(2) = -1;
616 sign [ 6 ].
at(3) = -1;
617 sign [ 7 ].
at(1) = 1;
618 sign [ 7 ].
at(2) = -1;
619 sign [ 7 ].
at(3) = -1;
624 indx =
gc.giveIntVarIndx();
627 if (
gc.giveIntVarType() == IST_StrainTensor ) {
632 if (
gc.giveIntVarType() == IST_ErrorIndicatorLevel ) {
637 StructuralElementEvaluator :: computeVectorOf(VM_Total, tStep, u);
643 span = iRule->giveKnotSpan();
646 int i, j, k, m, nseg = 8;
647 double du = ( knotVector [ 0 ] [ span->
at(1) + 1 ] - knotVector [ 0 ] [ span->
at(1) ] ) / nseg;
648 double dv = ( knotVector [ 1 ] [ span->
at(2) + 1 ] - knotVector [ 1 ] [ span->
at(2) ] ) / nseg;
649 double dw = ( knotVector [ 2 ] [ span->
at(3) + 1 ] - knotVector [ 2 ] [ span->
at(3) ] ) / nseg;
651 #ifdef DRAW_VISIBLE_CONTOUR
654 int kk, ii, nd [ 6 ] [ 4 ] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 0, 1, 5, 4 }, { 1, 2, 6, 5 }, { 2, 3, 7, 6 }, { 3, 0, 4, 7 } };
657 for ( i = 1; i <= nseg; i++ ) {
658 for ( j = 1; j <= nseg; j++ ) {
659 for ( m = 1; m <= nseg; m++ ) {
660 c [ 0 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
661 c [ 0 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
662 c [ 0 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * ( m - 1 );
663 c [ 1 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
664 c [ 1 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
665 c [ 1 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * ( m - 1 );
666 c [ 2 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
667 c [ 2 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
668 c [ 2 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * ( m - 1 );
669 c [ 3 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
670 c [ 3 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
671 c [ 3 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * ( m - 1 );
672 c [ 4 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
673 c [ 4 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
674 c [ 4 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * m;
675 c [ 5 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
676 c [ 5 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * ( j - 1 );
677 c [ 5 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * m;
678 c [ 6 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * i;
679 c [ 6 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
680 c [ 6 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * m;
681 c [ 7 ].
at(1) = knotVector [ 0 ] [ span->
at(1) ] + du * ( i - 1 );
682 c [ 7 ].
at(2) = knotVector [ 1 ] [ span->
at(2) ] + dv * j;
683 c [ 7 ].
at(3) = knotVector [ 2 ] [ span->
at(3) ] + dw * m;
685 for ( k = 0; k < 8; k++ ) {
687 p [ k ].x = ( FPNum ) cg [ k ].at(1);
688 p [ k ].y = ( FPNum ) cg [ k ].at(2);
689 p [ k ].z = ( FPNum ) cg [ k ].at(3);
692 #ifdef DRAW_VISIBLE_CONTOUR
693 #ifdef SPHERE_WITH_HOLE
697 for ( kk = 0; kk < 6; kk++ ) {
698 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
699 for ( ii = 0; ii < 4; ii++ ) {
700 xx += ( pp [ ii ].x = p [ nd [ kk ] [ ii ] ].x );
701 yy += ( pp [ ii ].y = p [ nd [ kk ] [ ii ] ].y );
702 zz += ( pp [ ii ].z = p [ nd [ kk ] [ ii ] ].z );
703 ss [ ii ] = s [ nd [ kk ] [ ii ] ];
708 rr = xx * xx + yy * yy;
711 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.0 || r < 25.0 || r > 5.99 * 5.99 ) {
721 for ( k = 0; k < 8; k++ ) {
723 GaussPoint gp(iRule.get(), 999, c [ k ], 1.0, _3dMat);
724 #ifdef COMPUTE_STRAIN
727 #ifdef COMPUTE_STRESS
732 s [ k ] = val.
at(indx);
737 vonMisses = sqrt( ( ( val.
at(1) - val.
at(2) ) * ( val.
at(1) - val.
at(2) ) + ( val.
at(2) - val.
at(3) ) * ( val.
at(2) - val.
at(3) ) + ( val.
at(1) - val.
at(3) ) * ( val.
at(1) - val.
at(3) ) + 6.0 * ( val.
at(4) * val.
at(4) + val.
at(5) * val.
at(5) + val.
at(6) * val.
at(6) ) ) / 2.0 );
743 double x, y, z, r, r2, rr;
746 sigma.at(1, 1) = val.
at(1);
747 sigma.at(1, 2) = val.
at(6);
748 sigma.at(1, 3) = val.
at(5);
749 sigma.at(2, 1) = val.
at(6);
750 sigma.at(2, 2) = val.
at(2);
751 sigma.at(2, 3) = val.
at(4);
752 sigma.at(3, 1) = val.
at(5);
753 sigma.at(3, 2) = val.
at(4);
754 sigma.at(3, 3) = val.
at(3);
759 r2 = x * x + y * y + z * z;
761 rr = sqrt(x * x + y * y);
763 T.at(1, 1) = -z * z * y / rr / r2 - y * rr / r2;
764 T.at(1, 2) = z * z * x / rr / r2 + x * rr / r2;
766 T.at(2, 1) = -z * x / rr / r;
767 T.at(2, 2) = -z * y / rr / r;
776 val.
at(1) = result.
at(1, 1);
777 val.
at(6) = result.
at(1, 2);
778 val.
at(5) = result.
at(1, 3);
779 val.
at(6) = result.
at(2, 1);
780 val.
at(2) = result.
at(2, 2);
781 val.
at(4) = result.
at(2, 3);
782 val.
at(5) = result.
at(3, 1);
783 val.
at(4) = result.
at(3, 2);
784 val.
at(3) = result.
at(3, 3);
786 s [ k ] = val.
at(indx);
789 #ifdef SPHERE_WITH_HOLE
790 if ( s [ k ] < mins ) {
793 if ( s [ k ] > maxs ) {
799 if ( ( std::isnan(s [ 0 ]) ) || ( std::isnan(s [ 1 ]) ) || ( std::isnan(s [ 2 ]) ) || ( std::isnan(s [ 3 ]) ) ) {
803 if ( ( std::isnan(s [ 4 ]) ) || ( std::isnan(s [ 5 ]) ) || ( std::isnan(s [ 6 ]) ) || ( std::isnan(s [ 7 ]) ) ) {
807 if ( ( fabs(s [ 0 ]) > 1.e5 ) || ( fabs(s [ 1 ]) > 1.e5 ) || ( fabs(s [ 2 ]) > 1.e5 ) || ( fabs(s [ 3 ]) > 1.e5 ) ) {
811 if ( ( fabs(s [ 4 ]) > 1.e5 ) || ( fabs(s [ 5 ]) > 1.e5 ) || ( fabs(s [ 6 ]) > 1.e5 ) || ( fabs(s [ 7 ]) > 1.e5 ) ) {
817 #ifdef DRAW_VISIBLE_CONTOUR
818 #ifdef SPHERE_WITH_HOLE
819 for ( kk = 0; kk < 6; kk++ ) {
820 double xx = 0.0, yy = 0.0, zz = 0.0, rr, r;
821 for ( ii = 0; ii < 4; ii++ ) {
822 xx += ( pp [ ii ].x = p [ nd [ kk ] [ ii ] ].x );
823 yy += ( pp [ ii ].y = p [ nd [ kk ] [ ii ] ].y );
824 zz += ( pp [ ii ].z = p [ nd [ kk ] [ ii ] ].z );
825 ss [ ii ] = s [ nd [ kk ] [ ii ] ];
830 rr = xx * xx + yy * yy;
833 if ( zz < 2.0001 || yy < 0.0001 || rr < 1.0 || r < 25.0 || r > 5.99 * 5.99 ) {
834 go = CreateQuadWD3D(pp, ss [ 0 ], ss [ 1 ], ss [ 2 ], ss [ 3 ]);
835 EGWithMaskChangeAttributes(LAYER_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK, go);
836 EMAddGraphicsToModel(ESIModel(), go);
841 go = CreateHexahedronWD(p, s);
842 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
843 EGAttachObject(go, ( EObjectP )
this);
844 EMAddGraphicsToModel(ESIModel(), go);
852 #ifdef SPHERE_WITH_HOLE
853 fprintf(stderr,
"%d %e %e %e %e\n", indx, mins, maxs, ( 10.0 * mins + maxs ) / 11.0, ( 10.0 * maxs + mins ) / 11.0);
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]