| | 574 | function db_get_plot_single_values($property_listx, $property_listy, $log, $category_options){ |
| | 575 | |
| | 576 | global $unit_infos; |
| | 577 | |
| | 578 | |
| | 579 | // Prepare Array list |
| | 580 | |
| | 581 | |
| | 582 | $query = array(); |
| | 583 | $power = array(); |
| | 584 | $NXqueries = array(); |
| | 585 | $NYqueries = array(); |
| | 586 | |
| | 587 | $xml_name = array( |
| | 588 | "Density" => "Density", |
| | 589 | "E" => "Young's Modulus", |
| | 590 | "Cp" => "Heat Capacity", |
| | 591 | "K" => "Thermal Conductivity", |
| | 592 | "YS" => "Yield Strength" |
| | 593 | ); |
| | 594 | |
| | 595 | |
| | 596 | $prop_units = array( |
| | 597 | "Density" => $unit_infos["g"]->div($unit_infos["cc"]), |
| | 598 | "E" => $unit_infos["MPa"], |
| | 599 | "YS" => $unit_infos["MPa"], |
| | 600 | "Cp" => $unit_infos["J"]->div($unit_infos["g"]->mul($unit_infos["°C"])), |
| | 601 | "K" => $unit_infos["W"]->div($unit_infos["m"]->mul($unit_infos["K"])), |
| | 602 | ); |
| | 603 | |
| | 604 | $index = 0; |
| | 605 | $xlabel_num =""; |
| | 606 | $ylabel_num =""; |
| | 607 | $xlabel_den =""; |
| | 608 | $ylabel_den =""; |
| | 609 | |
| | 610 | foreach( $property_listx as $property=>$pow){ |
| | 611 | $index++; |
| | 612 | $query["Xquery$index"]="$xml_name[$property]"; |
| | 613 | $power["Xquery$index"]= $pow; |
| | 614 | $final_units["Xquery$index"] = $prop_units["$property"]; |
| | 615 | |
| | 616 | if( $pow > 1){ |
| | 617 | $xlabel_num = "$xml_name[$property]^$pow *"; |
| | 618 | } |
| | 619 | elseif($pow == 1){ |
| | 620 | $xlabel_num = "$xml_name[$property]*"; |
| | 621 | } |
| | 622 | elseif($pow == -1){ |
| | 623 | $xlabel_den = "$xml_name[$property]*"; |
| | 624 | } |
| | 625 | elseif($pow < -1){ |
| | 626 | $xlabel_den = "$xml_name[$property]^".abs($pow)."*"; |
| | 627 | } |
| | 628 | |
| | 629 | array_push($NXqueries, "Xquery$index"); |
| | 630 | } |
| | 631 | |
| | 632 | $index = 0; |
| | 633 | |
| | 634 | |
| | 635 | foreach( $property_listy as $property=>$pow){ |
| | 636 | $index++; |
| | 637 | $query["Yquery$index"]="$xml_name[$property]"; |
| | 638 | $power["Yquery$index"]= $pow; |
| | 639 | $final_units["Yquery$index"] = $prop_units["$property"]; |
| | 640 | |
| | 641 | if( $pow > 1){ |
| | 642 | $ylabel_num = "$xml_name[$property]^$pow *"; |
| | 643 | } |
| | 644 | elseif($pow == 1){ |
| | 645 | $ylabel_num = "$xml_name[$property]*"; |
| | 646 | } |
| | 647 | elseif($pow == -1){ |
| | 648 | $ylabel_den = "$xml_name[$property]*"; |
| | 649 | } |
| | 650 | elseif($pow < -1){ |
| | 651 | $ylabel_den = "$xml_name[$property]^".abs($pow)."*"; |
| | 652 | } |
| | 653 | |
| | 654 | array_push($NYqueries, "Yquery$index"); |
| | 655 | } |
| | 656 | |
| | 657 | $ALLqueries = array_merge($NXqueries,$NYqueries); |
| | 658 | |
| | 659 | // Prepare final units |
| | 660 | |
| | 661 | |
| | 662 | $first = 0; |
| | 663 | foreach($NXqueries as $Nquery){ |
| | 664 | |
| | 665 | if($first){ |
| | 666 | $Xunits = $Xunits->mul($final_units["$Nquery"]->pow($power["$Nquery"])); |
| | 667 | } |
| | 668 | else{ |
| | 669 | $Xunits = $final_units["$Nquery"]->pow($power["$Nquery"]); |
| | 670 | $first = 1; |
| | 671 | } |
| | 672 | |
| | 673 | } |
| | 674 | |
| | 675 | $first = 0; |
| | 676 | foreach($NYqueries as $Nquery){ |
| | 677 | |
| | 678 | if($first){ |
| | 679 | $Yunits = $Yunits->mul($final_units["$Nquery"]->pow($power["$Nquery"])); |
| | 680 | } |
| | 681 | else{ |
| | 682 | $Yunits = $final_units["$Nquery"]->pow($power["$Nquery"]); |
| | 683 | $first = 1; |
| | 684 | } |
| | 685 | |
| | 686 | } |
| | 687 | |
| | 688 | |
| | 689 | |
| | 690 | // Prepare final labels |
| | 691 | |
| | 692 | $xlabel_num = substr($xlabel_num,0,-1); |
| | 693 | $xlabel_den = substr($xlabel_den,0,-1); |
| | 694 | $ylabel_num = substr($ylabel_num,0,-1); |
| | 695 | $ylabel_den = substr($ylabel_den,0,-1); |
| | 696 | |
| | 697 | $xlabel_num = ($xlabel_num != "")?"$xlabel_num":1; |
| | 698 | $ylabel_num = ($ylabel_num != "")?"$ylabel_num":1; |
| | 699 | |
| | 700 | $xlabel = ($xlabel_den != "")?"$xlabel_num / $xlabel_den":"$xlabel_num"; |
| | 701 | $ylabel = ($ylabel_den != "")?"$ylabel_num / $ylabel_den":"$ylabel_num"; |
| | 702 | |
| | 703 | $xlabel .= " (".$Xunits->name.")"; |
| | 704 | $ylabel .= " (".$Yunits->name.")"; |
| | 705 | |
| | 706 | |
| | 707 | $query["categories"]="Material Categories"; |
| | 708 | |
| | 709 | $valuesY = array(); |
| | 710 | $valuesX = array(); |
| | 711 | $valuese = array(); |
| | 712 | $categories = array(); |
| | 713 | |
| | 714 | $handle = opendir('materials'); |
| | 715 | |
| | 716 | // echo "<br><br>Begin Query <br>"; |
| | 717 | // print_r($query); |
| | 718 | // echo "End Query<br>"; |
| | 719 | |
| | 720 | |
| | 721 | |
| | 722 | while (false !== ($file = readdir($handle))) { |
| | 723 | if(preg_match("/\.xml?$/",$file)==1) |
| | 724 | { |
| | 725 | // Fetch values from DB and sort them in an array (actually 3 arrays) |
| | 726 | $values=get_property_data("materials/$file",$query); |
| | 727 | |
| | 728 | |
| | 729 | // echo "<br><br>Begin Values <br>"; |
| | 730 | // print_r($values); |
| | 731 | // echo "End Values <br>"; |
| | 732 | |
| | 733 | |
| | 734 | |
| | 735 | // If isset (for all values) |
| | 736 | |
| | 737 | $allset = 1; |
| | 738 | |
| | 739 | foreach( $ALLqueries as $Nquery){ |
| | 740 | if(isset($values["$Nquery"])) |
| | 741 | $allset *= 1; |
| | 742 | else |
| | 743 | $allset *= 0; |
| | 744 | } |
| | 745 | |
| | 746 | |
| | 747 | if( $allset ) |
| | 748 | { |
| | 749 | |
| | 750 | // Category part, deal with it later |
| | 751 | $values_categories=$values["categories"]; |
| | 752 | $values_categories[]=""; |
| | 753 | foreach($values_categories as $category) |
| | 754 | { |
| | 755 | if(isset($category_options[$category])) |
| | 756 | break; |
| | 757 | } |
| | 758 | if(!isset($category_options[$category])) |
| | 759 | continue; |
| | 760 | $category=$category_options[$category]; |
| | 761 | // Category part, deal with it later |
| | 762 | |
| | 763 | |
| | 764 | |
| | 765 | |
| | 766 | //Force unit match for all queries |
| | 767 | |
| | 768 | foreach( $NXqueries as $Nquery){ |
| | 769 | force_unit_match($values["Matid"],$final_units["$Nquery"],$values["$Nquery"]); |
| | 770 | } |
| | 771 | |
| | 772 | foreach( $NYqueries as $Nquery){ |
| | 773 | force_unit_match($values["Matid"],$final_units["$Nquery"],$values["$Nquery"]); |
| | 774 | } |
| | 775 | |
| | 776 | //Scale units |
| | 777 | //and add them to the array |
| | 778 | |
| | 779 | $cont = 1; |
| | 780 | |
| | 781 | // And the Power? |
| | 782 | |
| | 783 | foreach( $NXqueries as $Nquery){ |
| | 784 | $cont *= ( pow($values["$Nquery"]->avg_value,$power["$Nquery"]) /$final_units["$Nquery"]->scale); |
| | 785 | } |
| | 786 | $valuesX[]=$cont; |
| | 787 | |
| | 788 | $cont = 1; |
| | 789 | |
| | 790 | foreach( $NYqueries as $Nquery){ |
| | 791 | $cont *= ( pow($values["$Nquery"]->avg_value,$power["$Nquery"]) /$final_units["$Nquery"]->scale); |
| | 792 | } |
| | 793 | $valuesY[]=$cont; |
| | 794 | |
| | 795 | |
| | 796 | // print_r($valuesX); |
| | 797 | // echo "<br>"; |
| | 798 | // print_r($valuesY); |
| | 799 | // echo "<br>"; |
| | 800 | |
| | 801 | |
| | 802 | // Add Matid |
| | 803 | $names[]=$values["Matid"]; |
| | 804 | |
| | 805 | // Something else for category |
| | 806 | $categories[]=$category; |
| | 807 | |
| | 808 | } |
| | 809 | } |
| | 810 | } |
| | 811 | closedir($handle); |
| | 812 | |
| | 813 | |
| | 814 | //assing label |
| | 815 | |
| | 816 | // $ylabel = "$property_listy[0]"; |
| | 817 | // $xlabel = "$property_listx[0]"; |
| | 818 | |
| | 819 | |
| | 820 | |
| | 821 | return array(&$valuesX, &$valuesY, &$names, $xlabel, $ylabel, $categories); |
| | 822 | |
| | 823 | } |
| | 824 | |
| | 825 | |
| | 826 | |
| | 827 | |
| | 828 | |