00001 #include "elemnode.h"
00002
00003 elemnode::elemnode ()
00004 {
00005
00006 nse=0;
00007
00008 lse=NULL;
00009
00010
00011 nsn=0;
00012
00013 lsn=NULL;
00014
00015
00016 nie=0;
00017
00018
00019 elnod = NULL;
00020 }
00021
00022 elemnode::~elemnode ()
00023 {
00024 long i;
00025
00026 delete [] lse;
00027 delete [] lsn;
00028
00029 for (i=0;i<nie;i++){
00030 delete [] elnod[i];
00031 }
00032 delete [] elnod;
00033 }
00034
00035
00036
00037
00038
00039
00040
00041 void elemnode::selelem (long nselelem,long *lselem)
00042 {
00043 long i;
00044
00045
00046 nse = nselelem;
00047
00048
00049 lse = new long [nse];
00050
00051 for (i=0;i<nse;i++){
00052 lse[i]=lselem[i];
00053 }
00054 }
00055
00056
00057
00058
00059
00060
00061
00062 void elemnode::selnode (long nselnod,long *lselnod)
00063 {
00064 long i;
00065
00066
00067 nsn = nselnod;
00068
00069
00070 lsn = new long [nsn];
00071
00072 for (i=0;i<nsn;i++){
00073 lsn[i]=lselnod[i];
00074 }
00075 }
00076
00077
00078
00079
00080
00081
00082
00083
00084 void elemnode::elemnodes (gtopology *gt)
00085 {
00086 long i,j,k,l,ne,an;
00087 long *nne,**aux;
00088 ivector nod;
00089
00090
00091 ne = gt->ne;
00092
00093 aux = new long* [ne];
00094
00095 nne = new long [ne];
00096
00097
00098 nie=0;
00099
00100 for (i=0;i<ne;i++){
00101
00102 nne[i] = gt->give_nne (i);
00103
00104 aux[i] = new long [nne[i]];
00105
00106 allocv (nne[i],nod);
00107
00108 gt->give_nodes (i,nod);
00109 l=0;
00110 for (j=0;j<nne[i];j++){
00111 aux[i][j]=-1;
00112
00113 an=nod[j];
00114 for (k=0;k<nsn;k++){
00115 if (an==lsn[k]){
00116 aux[i][j]=k;
00117 l++;
00118 break;
00119 }
00120 }
00121 }
00122 destrv (nod);
00123
00124 if (l==0){
00125 nne[i]=0;
00126 }
00127 else{
00128 nie++;
00129 }
00130 }
00131
00132 lse = new long [nie];
00133 elnod = new long* [nie];
00134 nie=0;
00135 for (i=0;i<ne;i++){
00136 if (nne[i]>0){
00137 lse[nie]=i;
00138 elnod[nie] = new long [nne[i]];
00139 for (j=0;j<nne[i];j++){
00140 elnod[nie][j]=aux[i][j];
00141 }
00142 nie++;
00143 }
00144 }
00145
00146
00147 for (i=0;i<ne;i++){
00148 delete [] aux[i];
00149 }
00150 delete [] aux;
00151
00152 delete [] nne;
00153 }