00001 #include "shelltr.h"
00002 #include "global.h"
00003 #include "globmat.h"
00004 #include "genfile.h"
00005 #include "node.h"
00006 #include "element.h"
00007 #include "plelemrotlt.h"
00008 #include "dkt.h"
00009 #include "intpoints.h"
00010 #include <math.h>
00011
00012 shelltr::shelltr (void)
00013 {
00014 long i,j;
00015
00016 if (Perlt==NULL) Perlt = new planeelemrotlt;
00017 if (Dkt==NULL) Dkt = new dktelem;
00018
00019
00020 nne=3;
00021
00022 ndofe=18;
00023
00024 tncomp=6;
00025
00026 napfun=6;
00027
00028 ned=3;
00029
00030 nned=2;
00031
00032 ssst=shell;
00033
00034
00035
00036 nb = Perlt->nb + Dkt->nb;
00037
00038 ncomps = new long [Perlt->nb];
00039 ncomps[0]=2;
00040 ncomps[1]=1;
00041
00042 ncompd = new long [Dkt->nb];
00043 ncompd[0]=3;
00044
00045 nip = new long* [nb];
00046 intordsm = new long* [nb];
00047 for (i=0;i<nb;i++){
00048 nip[i]=new long [nb];
00049 intordsm[i] = new long [nb];
00050 }
00051 tncomps=Perlt->tncomp;
00052 tncompd=Dkt->tncomp;
00053
00054 long a00,a01,a10,a11,b00;
00055
00056
00057 a00=Perlt->nip[0][0]; a01=Perlt->nip[0][1];
00058 a10=Perlt->nip[1][0]; a11=Perlt->nip[1][1];
00059 b00=Dkt->nip[0][0];
00060
00061 nip[0][0]=a00; nip[0][1]=a01; nip[0][2]=0;
00062 nip[1][0]=a10; nip[1][1]=a11; nip[1][2]=0;
00063 nip[2][0]=0; nip[2][1]=0; nip[2][2]=b00;
00064
00065 a00=Perlt->intordsm[0][0]; a01=Perlt->intordsm[0][1];
00066 a10=Perlt->intordsm[1][0]; a11=Perlt->intordsm[1][1];
00067 b00=Dkt->intordsm[0][0];
00068
00069 intordsm[0][0]=a00; intordsm[0][1]=a01; intordsm[0][2]=0;
00070 intordsm[1][0]=a10; intordsm[1][1]=a11; intordsm[1][2]=0;
00071 intordsm[2][0]=0; intordsm[2][1]=0; intordsm[2][2]=b00;
00072
00073 dofe = new long [2];
00074 dofe[0]=Perlt->ndofe;
00075 dofe[1]=Dkt->ndofe;
00076
00077 tnip=0;
00078 for (i=0;i<nb;i++){
00079 for (j=0;j<nb;j++){
00080 tnip+=nip[i][j];
00081 }
00082 }
00083
00084 }
00085
00086 shelltr::~shelltr (void)
00087 {
00088 long i;
00089
00090 for (i=0;i<nb;i++){
00091 delete [] nip[i];
00092 delete [] intordsm[i];
00093 }
00094 delete [] nip;
00095 delete [] intordsm;
00096 delete [] ncomps;
00097 delete [] ncompd;
00098 delete [] dofe;
00099 }
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 void shelltr::tran_mat(vector &x, vector &y, matrix &tran, vector &gx, vector &gy, vector &gz)
00118 {
00119 double c,p,l;
00120
00121
00122 tran[0][0]=gx[1]-gx[0];
00123 tran[1][0]=gy[1]-gy[0];
00124 tran[2][0]=gz[1]-gz[0];
00125
00126
00127 l=sqrt(tran[0][0]*tran[0][0]+tran[1][0]*tran[1][0]+tran[2][0]*tran[2][0]);
00128
00129
00130 tran[0][0]/=l;
00131 tran[1][0]/=l;
00132 tran[2][0]/=l;
00133
00134
00135
00136 tran[0][1]=gx[2]-gx[0];
00137 tran[1][1]=gy[2]-gy[0];
00138 tran[2][1]=gz[2]-gz[0];
00139
00140
00141 p=tran[0][0]*tran[0][1]+tran[1][0]*tran[1][1]+tran[2][0]*tran[2][1];
00142
00143 c=0.0-p;
00144
00145
00146 tran[0][1]=tran[0][1]+tran[0][0]*c;
00147 tran[1][1]=tran[1][1]+tran[1][0]*c;
00148 tran[2][1]=tran[2][1]+tran[2][0]*c;
00149
00150
00151 l=sqrt(tran[0][1]*tran[0][1]+tran[1][1]*tran[1][1]+tran[2][1]*tran[2][1]);
00152
00153
00154 tran[0][1]/=l;
00155 tran[1][1]/=l;
00156 tran[2][1]/=l;
00157
00158
00159
00160 tran[0][2]=tran[1][0]*tran[2][1]-tran[2][0]*tran[1][1];
00161 tran[1][2]=tran[2][0]*tran[0][1]-tran[0][0]*tran[2][1];
00162 tran[2][2]=tran[0][0]*tran[1][1]-tran[1][0]*tran[0][1];
00163
00164
00165 l=sqrt(tran[0][2]*tran[0][2]+tran[1][2]*tran[1][2]+tran[2][2]*tran[2][2]);
00166
00167
00168 tran[0][2]/=l;
00169 tran[1][2]/=l;
00170 tran[2][2]/=l;
00171
00172
00173
00174
00175
00176
00177 x[0]=tran[0][0]*gx[0]+tran[1][0]*gy[0]+tran[2][0]*gz[0];
00178 y[0]=tran[0][1]*gx[0]+tran[1][1]*gy[0]+tran[2][1]*gz[0];
00179 c =tran[0][2]*gx[0]+tran[1][2]*gy[0]+tran[2][2]*gz[0];
00180
00181
00182 x[1]=tran[0][0]*gx[1]+tran[1][0]*gy[1]+tran[2][0]*gz[1];
00183 y[1]=tran[0][1]*gx[1]+tran[1][1]*gy[1]+tran[2][1]*gz[1];
00184 c =tran[0][2]*gx[1]+tran[1][2]*gy[1]+tran[2][2]*gz[1];
00185
00186
00187 x[2]=tran[0][0]*gx[2]+tran[1][0]*gy[2]+tran[2][0]*gz[2];
00188 y[2]=tran[0][1]*gx[2]+tran[1][1]*gy[2]+tran[2][1]*gz[2];
00189 c =tran[0][2]*gx[2]+tran[1][2]*gy[2]+tran[2][2]*gz[2];
00190 }
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211 void shelltr::tran_mat_old (vector &x, vector &y, matrix &tran, vector &gx, vector &gy, vector &gz)
00212 {
00213 long i,i1;
00214 double dl;
00215 matrix a(3,3);
00216
00217 for (i=0; i<3; i++) {
00218 i1=i+1; if(i1>2)i1=i1-3;
00219
00220 a[0][i]=gx[i1]-gx[i];
00221
00222 a[1][i]=gy[i1]-gy[i];
00223
00224 a[2][i]=gz[i1]-gz[i];
00225 }
00226
00227 dl=sqrt(a[0][0]*a[0][0]+a[1][0]*a[1][0]+a[2][0]*a[2][0]);
00228
00229 tran[0][0]=a[0][0]/dl;
00230 tran[1][0]=a[1][0]/dl;
00231 tran[2][0]=a[2][0]/dl;
00232
00233 tran[0][2]=a[1][0]*a[2][1]-a[2][0]*a[1][1];
00234 tran[1][2]=a[2][0]*a[0][1]-a[0][0]*a[2][1];
00235 tran[2][2]=a[0][0]*a[1][1]-a[1][0]*a[0][1];
00236
00237 dl=sqrt(tran[0][2]*tran[0][2]+tran[1][2]*tran[1][2]+tran[2][2]*tran[2][2]);
00238
00239 tran[0][2]=tran[0][2]/dl;
00240 tran[1][2]=tran[1][2]/dl;
00241 tran[2][2]=tran[2][2]/dl;
00242
00243 tran[0][1]=tran[1][2]*tran[2][0]-tran[2][2]*tran[1][0];
00244 tran[1][1]=tran[2][2]*tran[0][0]-tran[0][2]*tran[2][0];
00245 tran[2][1]=tran[0][2]*tran[1][0]-tran[1][2]*tran[0][0];
00246
00247 dl=sqrt(tran[0][1]*tran[0][1]+tran[1][1]*tran[1][1]+tran[2][1]*tran[2][1]);
00248
00249 tran[0][1]=tran[0][1]/dl;
00250 tran[1][1]=tran[1][1]/dl;
00251 tran[2][1]=tran[2][1]/dl;
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262 x[0]=0.0;
00263 y[0]=0.0;
00264 x[1]=sqrt(a[0][0]*a[0][0]+a[1][0]*a[1][0]+a[2][0]*a[2][0]);
00265 y[1]=0.0;
00266 x[2]=(gx(2)-gx(0))*tran(0,0)+(gy(2)-gy(0))*tran(1,0)+(gz(2)-gz(0))*tran(2,0);
00267 y[2]=(gx(2)-gx(0))*tran(0,1)+(gy(2)-gy(0))*tran(1,1)+(gz(2)-gz(0))*tran(2,1);
00268 }
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283 void shelltr::transf_matrix (ivector &nodes,matrix &tmat)
00284 {
00285 long i,i6,n,m;
00286
00287 fillm (0.0,tmat);
00288
00289 n=nodes.n;
00290 m=tmat.m;
00291 for (i=0;i<m;i++){
00292 tmat[i][i]=1.0;
00293 }
00294
00295 for (i=0;i<n;i++){
00296 if (Mt->nodes[nodes[i]].transf>0){
00297 i6=i*6;
00298 tmat[i6][i6] = Mt->nodes[nodes[i]].e1[0]; tmat[i6][i6+1] = Mt->nodes[nodes[i]].e2[0]; tmat[i6][i6+2] = Mt->nodes[nodes[i]].e3[0];
00299 tmat[i6+1][i6] = Mt->nodes[nodes[i]].e1[1]; tmat[i6+1][i6+1] = Mt->nodes[nodes[i]].e2[1]; tmat[i6+1][i6+2] = Mt->nodes[nodes[i]].e3[1];
00300 tmat[i6+2][i6] = Mt->nodes[nodes[i]].e1[2]; tmat[i6+2][i6+1] = Mt->nodes[nodes[i]].e2[2]; tmat[i6+2][i6+2] = Mt->nodes[nodes[i]].e3[2];
00301 i6=i*6+3;
00302 tmat[i6][i6] = Mt->nodes[nodes[i]].e1[0]; tmat[i6][i6+1] = Mt->nodes[nodes[i]].e2[0]; tmat[i6][i6+2] = Mt->nodes[nodes[i]].e3[0];
00303 tmat[i6+1][i6] = Mt->nodes[nodes[i]].e1[1]; tmat[i6+1][i6+1] = Mt->nodes[nodes[i]].e2[1]; tmat[i6+1][i6+2] = Mt->nodes[nodes[i]].e3[1];
00304 tmat[i6+2][i6] = Mt->nodes[nodes[i]].e1[2]; tmat[i6+2][i6+1] = Mt->nodes[nodes[i]].e2[2]; tmat[i6+2][i6+2] = Mt->nodes[nodes[i]].e3[2];
00305 }
00306 }
00307 }
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 void shelltr::res_stiffness_matrix (long eid,matrix &sm)
00319 {
00320 long *rcn,*ccn,transf;
00321 vector gx(nne),gy(nne),gz(nne),x(nne),y(nne);
00322 ivector nodes(nne);
00323 matrix lsm,tran(3,3);
00324
00325 Mt->give_elemnodes (eid,nodes);
00326 Mt->give_node_coord3d (gx,gy,gz,eid);
00327
00328 tran_mat(x,y, tran, gx, gy, gz);
00329
00330 fillm (0.0,sm);
00331
00332 rcn = new long [dofe[0]];
00333 ccn = new long [dofe[0]];
00334 allocm (dofe[0],dofe[0],lsm);
00335
00336
00337 Perlt->stiffness_matrix (eid,0,0,lsm,x,y);
00338
00339 rcn[0]=1; rcn[1]=2; rcn[2]=6; rcn[3]=7; rcn[4]=8; rcn[5]=12; rcn[6]=13; rcn[7]=14; rcn[8]=18;
00340 ccn[0]=1; ccn[1]=2; ccn[2]=6; ccn[3]=7; ccn[4]=8; ccn[5]=12; ccn[6]=13; ccn[7]=14; ccn[8]=18;
00341
00342 mat_localize (sm,lsm,rcn,ccn);
00343
00344 delete [] ccn; delete [] rcn; destrm (lsm);
00345
00346 rcn = new long [dofe[1]];
00347 ccn = new long [dofe[1]];
00348 allocm (dofe[1],dofe[1],lsm);
00349
00350
00351
00352 Dkt->stiffness_matrix (eid,2,2,lsm,x,y);
00353
00354 rcn[0]=3; rcn[1]=4; rcn[2]=5; rcn[3]=9; rcn[4]=10; rcn[5]=11; rcn[6]=15; rcn[7]=16; rcn[8]=17;
00355 ccn[0]=3; ccn[1]=4; ccn[2]=5; ccn[3]=9; ccn[4]=10; ccn[5]=11; ccn[6]=15; ccn[7]=16; ccn[8]=17;
00356
00357 mat_localize (sm,lsm,rcn,ccn);
00358
00359
00360 lgmatrixtransfblock(sm, tran);
00361
00362 transf = Mt->locsystems (nodes);
00363 if (transf>0){
00364 matrix tmat (ndofe,ndofe);
00365 transf_matrix (nodes,tmat);
00366 glmatrixtransf (sm,tmat);
00367 }
00368
00369
00370
00371
00372
00373
00374
00375
00376 delete [] ccn; delete [] rcn; destrm (lsm);
00377
00378 }
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390 void shelltr::res_ip_strains (long lcid,long eid)
00391 {
00392 long *ccn;
00393 vector aux,x(nne),y(nne),gx(nne),gy(nne),gz(nne),r(ndofe),v;
00394 ivector nodes(nne);
00395 matrix tmat,tran(3,3);
00396
00397 Mt->give_elemnodes (eid,nodes);
00398 Mt->give_node_coord3d (gx,gy,gz,eid);
00399
00400 tran_mat(x,y, tran, gx, gy, gz);
00401 eldispl (lcid,eid,r.a);
00402
00403
00404 long transf = Mt->locsystems (nodes);
00405 if (transf>0){
00406 allocv (ndofe,aux);
00407 allocm (ndofe,ndofe,tmat);
00408 transf_matrix (nodes,tmat);
00409
00410 lgvectortransf (aux,r,tmat);
00411 copyv (aux,r);
00412 destrv (aux);
00413 destrm (tmat);
00414 }
00415
00416
00417 glvectortransfblock (r,tran);
00418
00419 ccn = new long [dofe[0]];
00420 allocv (dofe[0],v);
00421 ccn[0]=1; ccn[1]=2; ccn[2]=6; ccn[3]=7; ccn[4]=8; ccn[5]=12; ccn[6]=13; ccn[7]=14; ccn[8]=18;
00422 globloc (r.a,v.a,ccn,dofe[0]);
00423
00424 Perlt->ip_strains (lcid,eid,0,0,x,y,v);
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443 delete [] ccn;
00444 destrv (v);
00445
00446 allocv (dofe[1],v);
00447 ccn = new long [dofe[1]];
00448 ccn[0]=3; ccn[1]=4; ccn[2]=5; ccn[3]=9; ccn[4]=10; ccn[5]=11; ccn[6]=15; ccn[7]=16; ccn[8]=17;
00449 globloc (r.a,v.a,ccn,dofe[1]);
00450
00451 Dkt->ip_strains (lcid,eid,2,2,x,y,v);
00452
00453 destrv (v);
00454 delete [] ccn;
00455
00456 }
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467 void shelltr::res_ip_stresses (long lcid,long eid)
00468 {
00469 Perlt->compute_nlstress (lcid,eid,0,0);
00470 Dkt->compute_nlstress (lcid,eid,2,2);
00471 }
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481 void shelltr::compute_nlstress (long lcid,long eid)
00482 {
00483 Perlt->compute_nlstress (lcid,eid,0,0);
00484 Dkt->compute_nlstress (lcid,eid,2,2);
00485 }
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496 void shelltr::compute_nlstressincr (long lcid,long eid)
00497 {
00498 Perlt->compute_nlstressincr (lcid,eid,0,0);
00499 Dkt->compute_nlstressincr (lcid,eid,2,2);
00500 }
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512 void shelltr::res_internal_forces (long lcid,long eid,vector &ifor)
00513 {
00514 long *ccn,transf;
00515 ivector nodes (nne);
00516 vector v(ndofe),x(nne),y(nne),z(nne),gx(nne),gy(nne),gz(nne);
00517 matrix tran(3,3);
00518
00519 Mt->give_node_coord3d (gx,gy,gz,eid);
00520
00521 tran_mat(x,y, tran, gx, gy, gz);
00522
00523 ccn = new long [dofe[0]];
00524 allocv (dofe[0],v);
00525
00526 Perlt->internal_forces (lcid,eid,0,0,v,x,y);
00527
00528 ccn[0]=1; ccn[1]=2; ccn[2]=6; ccn[3]=7; ccn[4]=8; ccn[5]=12; ccn[6]=13; ccn[7]=14; ccn[8]=18;
00529 locglob (ifor.a,v.a,ccn,dofe[0]);
00530
00531 delete [] ccn; destrv (v);
00532
00533 ccn = new long [dofe[1]];
00534 allocv (dofe[1],v);
00535
00536 Dkt->internal_forces (lcid,eid,2,2,v,x,y);
00537
00538 ccn[0]=3; ccn[1]=4; ccn[2]=5; ccn[3]=9; ccn[4]=10; ccn[5]=11; ccn[6]=15; ccn[7]=16; ccn[8]=17;
00539 locglob (ifor.a,v.a,ccn,dofe[1]);
00540
00541
00542
00543
00544 Mt->give_elemnodes (eid,nodes);
00545 transf = Mt->locsystems (nodes);
00546 if (transf>0){
00547 matrix tmat (ndofe,ndofe);
00548 transf_matrix (nodes,tmat);
00549 glvectortransf (ifor,v,tmat);
00550 copyv (v,ifor);
00551 }
00552 }
00553
00554
00555
00556
00557
00558 void shelltr::nod_strains_ip (long lcid,long eid)
00559 {
00560
00561
00562
00563
00564
00565
00566 long i,j,ipp;
00567 ivector ipnums(nne),ipnump(nne),nod(nne);
00568 vector gx(nne),gy(nne),gz(nne),x(nne),y(nne);
00569 vector epss(tncomps),epsp(tncomps),eps(tncomp);
00570 matrix tran(3,3);
00571
00572
00573 Mt->give_node_coord3d (gx,gy,gz,eid);
00574
00575 tran_mat(x,y, tran, gx, gy, gz);
00576
00577
00578
00579 ipp=Mt->elements[eid].ipp[0][0];
00580 nodip_planelt (ipp,intordsm[0][0],ipnums);
00581 ipp=Mt->elements[eid].ipp[2][2];
00582 nodip_planelt (ipp,intordsm[2][2],ipnump);
00583
00584
00585 Mt->give_elemnodes (eid,nod);
00586
00587 for (i=0;i<nne;i++){
00588
00589 Mm->givestrain (lcid,ipnums[i],epss);
00590 Mm->givestrain (lcid,ipnump[i],epsp);
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601 loc_glob_tens_trans (eps,tran);
00602
00603
00604 j=nod[i];
00605 Mt->nodes[j].storestrain (lcid,0,eps.n,eps);
00606 }
00607 destrv (eps);
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631 }
00632
00633 void shelltr::strains (long lcid,long eid)
00634 {
00635
00636 }
00637
00638 void shelltr::nod_stresses_ip (long lcid,long eid)
00639 {
00640
00641
00642 Perlt->nod_stresses_ip (lcid,eid,0,0);
00643
00644
00645 Dkt->nod_stresses_ip (lcid,eid,2,2);
00646 }
00647
00648
00649
00650 void shelltr::stresses (long lcid,long eid)
00651 {
00652 }
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678 void shelltr::inicipval(long eid, long ri, long ci, matrix &nodval, inictype *ictn)
00679 {
00680 long i, j, k, ipp;
00681 long ii, jj, nv = nodval.n;
00682 double xi, eta;
00683
00684 vector w, gp1, gp2, anv(nne);
00685 long nstra, nstre, ncompstr, ncompeqother;
00686 long idstra, idstre, idoth, idic;
00687 inictype ict;
00688
00689 nstra = idstra = nstre = idstre = idoth = idic = 0;
00690
00691 ict = ictn[0];
00692 for (i=0; i<nne; i++)
00693 {
00694 if (ictn[i] != ict)
00695 {
00696 print_err("Incompatible types of initial conditions on element %ld\n"
00697 " at %ld. and %ld. nodes", __FILE__, __LINE__, __func__, eid+1, 1, i+1);
00698 abort();
00699 }
00700 }
00701 for (j = 0; j < nv; j++)
00702 {
00703 for(i = 0; i < nne; i++)
00704 anv[i] = nodval[i][j];
00705 for (ii = 0; ii < nb; ii++)
00706 {
00707 for (jj = 0; jj < nb; jj++)
00708 {
00709 ipp=Mt->elements[eid].ipp[ri+ii][ci+jj];
00710 if (intordsm[ii][jj] == 0)
00711 continue;
00712 allocv (intordsm[ii][jj],gp1);
00713 allocv (intordsm[ii][jj],gp2);
00714 allocv (intordsm[ii][jj],w);
00715 gauss_points_tr (gp1.a, gp2.a, w.a, intordsm[ii][jj]);
00716 for (k = 0; k < intordsm[ii][jj]; k++)
00717 {
00718 xi=gp1[k];
00719 eta=gp2[k];
00720
00721
00722 ncompstr = Mm->ip[ipp].ncompstr;
00723 ncompeqother = Mm->ip[ipp].ncompeqother;
00724 if ((ictn[0] & inistrain) && (j < ncompstr))
00725 {
00726
00727 ipp++;
00728 continue;
00729 }
00730 if ((ictn[0] & inistress) && (j < nstra + ncompstr))
00731 {
00732
00733 ipp++;
00734 continue;
00735 }
00736 if ((ictn[0] & iniother) && (j < nstra+nstre+ncompeqother))
00737 {
00738
00739 ipp++;
00740 continue;
00741 }
00742 if ((ictn[0] & inicond) && (j < nv))
00743 {
00744 if (Mm->ic[ipp] == NULL)
00745 {
00746 Mm->ic[ipp] = new double[nv-j];
00747 memset(Mm->ic[ipp], 0, sizeof(*Mm->ic[ipp])*(nv-j));
00748 }
00749
00750 ipp++;
00751 continue;
00752 }
00753 ipp++;
00754 }
00755 destrv(gp1); destrv (gp2); destrv (w);
00756 }
00757 }
00758 ipp=Mt->elements[eid].ipp[ri][ci];
00759 ncompstr = Mm->ip[ipp].ncompstr;
00760 ncompeqother = Mm->ip[ipp].ncompeqother;
00761 if ((ictn[0] & inistrain) && (j < ncompstr))
00762 {
00763 nstra++;
00764 idstra++;
00765 continue;
00766 }
00767 if ((ictn[0] & inistress) && (j < nstra + ncompstr))
00768 {
00769 nstre++;
00770 idstre++;
00771 continue;
00772 }
00773 if ((ictn[0] & iniother) && (j < nstra + nstre + ncompeqother))
00774 {
00775 idoth++;
00776 continue;
00777 }
00778 if ((ictn[0] & inicond) && (j < nv))
00779 {
00780 idic++;
00781 continue;
00782 }
00783 }
00784 }