int main() { int i,index_file,index_base,nzone,index_zone,nconns,index_conn; char donorname[33],connectname[33]; GridLocation_t location; GridConnectivityType_t iconnect_type; PointSetType_t iptset_type,idonor_ptset_type; ZoneType_t idonor_zonetype; DataType_t idonor_datatype; cgsize_t npts,ndata_donor; cgsize_t ipnts[maxpnts][3],ipntsdonor[maxpnts][3]; /* READ GENERAL CONNECTIVITY INFORMATION FROM EXISTING CGNS FILE */ /* open CGNS file for read-only */ if (cg_open("grid_c.cgns",CG_MODE_READ,&index_file)) cg_error_exit(); /* we know there is only one base (real working code would check!) */ index_base=1; /* get number of zones (should be 2 for our case) */ cg_nzones(index_file,index_base,&nzone); if (nzone != 2) { printf("\nError. This program expects 2 zones. %d read.\n",nzone); return 1; } /* loop over zones */ for (index_zone=1; index_zone <= nzone; ++index_zone) { /* find out how many general interfaces there are in this zone */ /* (for this program, there should only be one) */ cg_nconns(index_file,index_base,index_zone,&nconns); if (nconns != 1) { printf("\nError. Expecting one general interface. %i read\n",nconns); return 1; } index_conn=nconns; /* read general connectivity info */ cg_conn_info(index_file,index_base,index_zone,index_conn,connectname,&location, &iconnect_type,&iptset_type,&npts,donorname,&idonor_zonetype, &idonor_ptset_type,&idonor_datatype,&ndata_donor); if (npts > maxpnts) { printf("\nError. Must increase maxpnts to at least %i\n",(int)npts); return 1; } cg_conn_read(index_file,index_base,index_zone,index_conn,ipnts[0], idonor_datatype,ipntsdonor[0]); printf("\nIn zone %i:\n",index_zone); printf(" donor name=%s\n",donorname); printf(" number of connectivity pts=%i\n",(int)npts); printf(" grid location=%s\n",GridLocationName[location]); printf(" connectivity type=%s\n",GridConnectivityTypeName[iconnect_type]); printf(" pointset type=%s\n",PointSetTypeName[iptset_type]); printf(" donor zonetype=%s\n",ZoneTypeName[idonor_zonetype]); printf(" donor pointset type=%s\n",PointSetTypeName[idonor_ptset_type]); printf(" data type=%s\n",DataTypeName[idonor_datatype]); printf(" ipnts and ipntsdonor arrays read, only some written out here:\n"); for (i=0; i < 10; i++) { printf(" ipnts[%i][0], [%i][1], [%i][2]=%i,%i,%i", i,i,i,(int)ipnts[i][0],(int)ipnts[i][1],(int)ipnts[i][2]); printf(" ipntsdonor[%i][0], [%i][1], [%i][2]=%i,%i,%i\n", i,i,i,(int)ipntsdonor[i][0],(int)ipntsdonor[i][1],(int)ipntsdonor[i][2]); } } /* close CGNS file */ cg_close(index_file); printf("\nSuccessfully read general 1-to-1 connectivity info from file grid_c.cgns\n"); return 0; }
int main() { int ilo[2],ihi[2],jlo[2],jhi[2],klo[2],khi[2]; int icount,j,k; int index_file,index_base,nzone,index_zone,nconns,n1to1,index_conn,iz; char donorname[33],zonename0[33],zonename1[33],zn[33]; cgsize_t isize[3][3],ipnts[maxcount][3],ipntsdonor[maxcount][3]; /* WRITE GENERAL CONNECTIVITY INFORMATION TO EXISTING CGNS FILE */ /* open CGNS file for modify */ if (cg_open("grid_c.cgns",CG_MODE_MODIFY,&index_file)) cg_error_exit(); /* we know there is only one base (real working code would check!) */ index_base=1; /* get number of zones (should be 2 for our case) */ cg_nzones(index_file,index_base,&nzone); if (nzone != 2) { printf("\nError. This program expects 2 zones. %d read.\n",nzone); return 1; } /* loop over zones to get zone sizes and names */ for (index_zone=0; index_zone < nzone; ++index_zone) { iz=index_zone+1; cg_zone_read(index_file,index_base,iz,zn,isize[0]); if (index_zone == 0) { strcpy(zonename0,zn); } else { strcpy(zonename1,zn); } ilo[index_zone]=1; ihi[index_zone]=isize[0][0]; jlo[index_zone]=1; jhi[index_zone]=isize[0][1]; klo[index_zone]=1; khi[index_zone]=isize[0][2]; } /* loop over zones again */ for (index_zone=0; index_zone < nzone; ++index_zone) { iz=index_zone+1; /* for this program, there should be no existing connectivity info: */ cg_nconns(index_file,index_base,iz,&nconns); if (nconns != 0) { printf("\nError. This program expects no interfaces yet. %d read.\n",nconns); return 1; } cg_n1to1(index_file,index_base,iz,&n1to1); if (n1to1 != 0) { printf("\nError. This program expects no interfaces yet. %d read.\n",n1to1); return 1; } /* set up point lists */ if (index_zone == 0) { strcpy(donorname,zonename1); icount=0; for (j=jlo[index_zone]; j <= jhi[index_zone]; j++) { for (k=klo[index_zone]; k <= khi[index_zone]; k++) { ipnts[icount][0]=ihi[0]; ipnts[icount][1]=j; ipnts[icount][2]=k; ipntsdonor[icount][0]=ilo[1]; ipntsdonor[icount][1]=j; ipntsdonor[icount][2]=k; icount=icount+1; } } if (icount > maxcount) { printf("\nError. Need to increase maxcount to at least %i\n",icount); return 1; } } else { strcpy(donorname,zonename0); icount=0; for (j=jlo[index_zone]; j <= jhi[index_zone]; j++) { for (k=klo[index_zone]; k <= khi[index_zone]; k++) { ipnts[icount][0]=ilo[1]; ipnts[icount][1]=j; ipnts[icount][2]=k; ipntsdonor[icount][0]=ihi[0]; ipntsdonor[icount][1]=j; ipntsdonor[icount][2]=k; icount=icount+1; } } if (icount > maxcount) { printf("\nError. Need to increase maxcount to at least %i\n",icount); return 1; } } /* write integer connectivity info (user can give any name) */ cg_conn_write(index_file,index_base,iz,"GenInterface",Vertex,Abutting1to1, PointList,icount,ipnts[0],donorname,Structured, PointListDonor,Integer,icount,ipntsdonor[0],&index_conn); } /* close CGNS file */ cg_close(index_file); printf("\nSuccessfully added 1-to-1 connectivity info to file grid_c.cgns (using GENERAL method)\n"); return 0; }
int main() { int ilo[2],ihi[2],jlo[2],jhi[2],klo[2],khi[2]; int itranfrm[3]; int index_file,index_base,nzone,index_zone,nconns,n1to1,index_conn,iz; char donorname[33],zonename0[33],zonename1[33],zn[33]; cgsize_t isize[3][3],ipnts[2][3],ipntsdonor[2][3]; printf("\nProgram write_con2zn_str\n"); /* WRITE 1-TO-1 CONNECTIVITY INFORMATION TO EXISTING CGNS FILE */ /* open CGNS file for modify */ if (cg_open("grid_c.cgns",CG_MODE_MODIFY,&index_file)) cg_error_exit(); /* we know there is only one base (real working code would check!) */ index_base=1; /* get number of zones (should be 2 for our case) */ cg_nzones(index_file,index_base,&nzone); if (nzone != 2) { printf("\nError. This program expects 2 zones. %d read.\n",nzone); return 1; } /* loop over zones to get zone sizes and names */ for (index_zone=0; index_zone < nzone; ++index_zone) { iz=index_zone+1; cg_zone_read(index_file,index_base,iz,zn,isize[0]); if (index_zone == 0) { strcpy(zonename0,zn); } else { strcpy(zonename1,zn); } ilo[index_zone]=1; ihi[index_zone]=isize[0][0]; jlo[index_zone]=1; jhi[index_zone]=isize[0][1]; klo[index_zone]=1; khi[index_zone]=isize[0][2]; } /* loop over zones again */ for (index_zone=0; index_zone < nzone; ++index_zone) { iz=index_zone+1; /* for this program, there should be no existing connectivity info: */ cg_nconns(index_file,index_base,iz,&nconns); if (nconns != 0) { printf("\nError. This program expects no interfaces yet. %d read.\n",nconns); return 1; } cg_n1to1(index_file,index_base,iz,&n1to1); if (n1to1 != 0) { printf("\nError. This program expects no interfaces yet. %d read.\n",n1to1); return 1; } /* set up index ranges */ if (index_zone == 0) { strcpy(donorname,zonename1); /* lower point of receiver range */ ipnts[0][0]=ihi[0]; ipnts[0][1]=jlo[0]; ipnts[0][2]=klo[0]; /* upper point of receiver range */ ipnts[1][0]=ihi[0]; ipnts[1][1]=jhi[0]; ipnts[1][2]=khi[0]; /* lower point of donor range */ ipntsdonor[0][0]=ilo[1]; ipntsdonor[0][1]=jlo[1]; ipntsdonor[0][2]=klo[1]; /* upper point of donor range */ ipntsdonor[1][0]=ilo[1]; ipntsdonor[1][1]=jhi[1]; ipntsdonor[1][2]=khi[1]; } else { strcpy(donorname,zonename0); /* lower point of receiver range */ ipnts[0][0]=ilo[1]; ipnts[0][1]=jlo[1]; ipnts[0][2]=klo[1]; /* upper point of receiver range */ ipnts[1][0]=ilo[1]; ipnts[1][1]=jhi[1]; ipnts[1][2]=khi[1]; /* lower point of donor range */ ipntsdonor[0][0]=ihi[0]; ipntsdonor[0][1]=jlo[0]; ipntsdonor[0][2]=klo[0]; /* upper point of donor range */ ipntsdonor[1][0]=ihi[0]; ipntsdonor[1][1]=jhi[0]; ipntsdonor[1][2]=khi[0]; } /* set up Transform */ itranfrm[0]=1; itranfrm[1]=2; itranfrm[2]=3; /* write 1-to-1 info (user can give any name) */ cg_1to1_write(index_file,index_base,iz,"Interface",donorname, ipnts[0],ipntsdonor[0],itranfrm,&index_conn); } /* close CGNS file */ cg_close(index_file); printf("\nSuccessfully added 1-to-1 connectivity info to file grid_c.cgns\n"); return 0; }