/* This program creates a vgroup and inserts 3 vdatas into a vgroup 
 * Add error check when necessary using 
 *     if (ret == FAIL) printf("<function> failed \n");
*/

 #include  "hdf.h"
/* #include "vg.h"  */


main() {
  int32 vgid, vsid, f;
  float32 pxy[100][2];
  float32 tmp[100];
  int16 mesh[100][3];
  int i, ret;

  for(i=0;i<100;i++) {
    tmp[i]=i*0.1;
    pxy[i][0]=i*0.01+100.0;
    pxy[i][1]=i*0.01+50.0;
    mesh[i][0]=i+1;
    mesh[i][1]=i+2;
    mesh[i][2]=i+3;
  }

  f=Hopen("myfile.hdf",DFACC_ALL,0);
  Vstart(f);
 
    vgid= Vattach(f,-1,"w");
    ret = Vsetname(vgid,"mypoints");

        vsid = VSattach(f,-1,"w");
        VSsetname(vsid, "vdata1");
        ret = VSfdefine(vsid,"PLIST",DFNT_INT16,3);  
        ret = VSsetfields(vsid,"PLIST");
        ret = VSwrite(vsid,(uint8 *) mesh,100,FULL_INTERLACE);
        ret = Vinsert(vgid,vsid);
        VSdetach(vsid);

        vsid = VSattach(f,-1,"w");
        VSsetname(vsid, "vdata2");

        ret = VSsetfields(vsid,"PX,PY");
        ret = VSwrite(vsid,(uint8 *) pxy,100,FULL_INTERLACE);
        ret = Vinsert(vgid,vsid);
        VSdetach(vsid);

        vsid = VSattach(f,-1,"w");
        VSsetname(vsid, "vdata3");
        ret = VSfdefine(vsid,"TMP",DFNT_FLOAT32,1);
        ret = VSsetfields(vsid,"TMP");
        ret = VSwrite(vsid,(uint8 *) tmp,100,FULL_INTERLACE);
        ret = Vinsert(vgid, vsid);
        VSdetach(vsid);

    Vdetach(vgid);

  Vend(f);
  Hclose(f);

  for(i=0;i<100;i++) {
    printf("Coord = (%f,%f) , Temp = %f \n",pxy[i][0],pxy[i][1],tmp[i]);
    printf("Element %d = %d,%d,%d \n",i+1,mesh[i][0],mesh[i][1],mesh[i][2]);
  }
}

