Changeset 10480 for issm/trunk/src/c/objects/Elements/PentaRef.cpp
- Timestamp:
- 11/04/11 16:41:35 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/PentaRef.cpp
r10135 r10480 651 651 } 652 652 /*}}}*/ 653 /*FUNCTION PentaRef::GetLStokes2{{{1*/ 654 void PentaRef::GetLStokes2(double* LStokes, GaussPenta* gauss){ 655 /* 656 * Compute L matrix. L=[L1 L2 L3] where Li is square and of size numdof. 657 * For node i, Li can be expressed in the actual coordinate system 658 * by: 659 * Li=[ h 0 0 0] 660 * [ 0 h 0 0] 661 * [ 0 0 h h] 662 * [ 0 0 0 0] 663 * where h is the interpolation function for node i. 664 */ 665 666 int i; 667 int num_dof=4; 668 669 double l1l2l3[NUMNODESP1_2d]; 670 671 672 /*Get l1l2l3 in actual coordinate system: */ 673 l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; 674 l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; 675 l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; 676 677 /*Build LStokes: */ 678 for (i=0;i<3;i++){ 679 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+0)=l1l2l3[i]; //LStokes[0][NDOF2*i]=dh1dh3[0][i]; 680 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0.; 681 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0.; 682 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0.; 683 684 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+0)=0.; 685 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; 686 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0.; 687 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0.; 688 689 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+0)=0.; 690 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0.; 691 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+2)=l1l2l3[i]; 692 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+3)=0.; 693 694 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+0)=0.; 695 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=0.; 696 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+2)=l1l2l3[i]; 697 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+3)=0.; 698 } 699 } 700 /*}}}*/ 701 /*FUNCTION PentaRef::GetLStokes3{{{1*/ 702 void PentaRef::GetLStokes3(double* LStokes, GaussPenta* gauss){ 703 /* 704 * Compute L matrix. L=[L1 L2 L3] where Li is square and of size numdof. 705 * For node i, Li can be expressed in the actual coordinate system 706 * by: 707 * Li=[ h 0 ] 708 * [ 0 h ] 709 * [ 0 0 ] 710 * [ 0 0 ] 711 * where h is the interpolation function for node i. 712 */ 713 714 int i; 715 int num_dof=4; 716 717 double l1l2l3[NUMNODESP1_2d]; 718 719 720 /*Get l1l2l3 in actual coordinate system: */ 721 l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; 722 l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; 723 l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; 724 725 /*Build LStokes: */ 726 for (i=0;i<3;i++){ 727 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+0)=l1l2l3[i]; //LStokes[0][NDOF2*i]=dh1dh3[0][i]; 728 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0.; 729 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0.; 730 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0.; 731 732 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+0)=0.; 733 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; 734 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0.; 735 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0.; 736 } 737 } 738 /*}}}*/ 739 /*FUNCTION PentaRef::GetLprimeStokes2{{{1*/ 740 void PentaRef::GetLprimeStokes2(double* LStokes,double* xyz_list,GaussPenta* gauss){ 741 /* 742 * Compute L matrix. L=[L1 L2 L3] where Li is square and of size numdof. 743 * For node i, Li can be expressed in the actual coordinate system 744 * by: 745 * Li=[ h 0 0 0] 746 * [ 0 h 0 0] 747 * [ 0 0 dh\dz 0] 748 * [ 0 0 0 h] 749 * where h is the interpolation function for node i. 750 */ 751 752 int i; 753 int num_dof=4; 754 755 double l1l2l3[NUMNODESP1_2d]; 756 double dh1dh6[3][NUMNODESP1]; 757 758 759 /*Get l1l2l3 in actual coordinate system: */ 760 l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; 761 l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; 762 l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; 763 764 GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list,gauss); 765 766 /*Build LStokes: */ 767 for (i=0;i<3;i++){ 768 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+0)=l1l2l3[i]; //LStokes[0][NDOF2*i]=dh1dh3[0][i]; 769 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0.; 770 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0.; 771 *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0.; 772 773 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+0)=0.; 774 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; 775 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0.; 776 *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0.; 777 778 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+0)=0.; 779 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0.; 780 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+2)=dh1dh6[2][i]; 781 *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+3)=0.; 782 783 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+0)=0.; 784 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=0.; 785 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+2)=0.; 786 *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+3)=l1l2l3[i]; 787 } 788 } 789 /*}}}*/ 653 790 /*FUNCTION PentaRef::GetLprimeStokes {{{1*/ 654 791 void PentaRef::GetLprimeStokes(double* LprimeStokes, double* xyz_list, GaussPenta* gauss){ … … 658 795 * For node i, Lpi can be expressed in the actual coordinate system 659 796 * by: 660 * Lpi=[ h 0 0 0] 661 * [ 0 h 0 0] 662 * [ h 0 0 0] 663 * [ 0 h 0 0] 664 * [ 0 0 h 0] 665 * [ 0 0 h 0] 666 * [ 0 0 dh/dz 0] 667 * [ 0 0 dh/dz 0] 668 * [ 0 0 dh/dz 0] 669 * [dh/dz 0 dh/dx 0] 670 * [ 0 dh/dz dh/dy 0] 671 * [ 0 0 0 h] 672 * [ 0 0 0 h] 673 * [ 0 0 0 h] 797 * Lpi=[ h 0 0 0]1 798 * [ 0 h 0 0]2 799 * [ h 0 0 0]3 800 * [ 0 h 0 0]4 801 * [ 0 0 h 0]5 802 * [ 0 0 h 0]6 803 * [ 0 0 dh/dz 0]7 804 * [ 0 0 dh/dz 0]8 805 * [ 0 0 dh/dz 0]9 806 * [dh/dz 0 dh/dx 0]0 807 * [ 0 dh/dz dh/dy 0]1 808 * [ 0 0 0 h]2 809 * [ 0 0 0 h]3 810 * [ 0 0 0 h]4 811 * 812 * Li=[ h 0 0 0]1 813 * [ 0 h 0 0]2 814 * [ 0 0 h 0]3 815 * [ 0 0 h 0]4 816 * [ h 0 0 0]5 817 * [ 0 h 0 0]6 818 * [ h 0 0 0]7 819 * [ 0 h 0 0]8 820 * [ 0 0 h 0]9 821 * [ 0 0 h 0]0 822 * [ 0 0 h 0]1 823 * [ h 0 0 0]2 824 * [ 0 h 0 0]3 825 * [ 0 0 h 0]4 674 826 * where h is the interpolation function for node i. 675 827 */
Note:
See TracChangeset
for help on using the changeset viewer.