/*@@ @routine IOASCII_Choose2D @author Gabrielle Allen @date July 6 2000 @desc Use parameters to choose the 2D slices through the output data. @enddesc @calls CCTK_ParameterQueryTimesSet IOUtil_2DPlanes @var GH @vdesc Pointer to CCTK grid hierarchy @vtype cGH * @vio in @endvar @@*/ void IOASCII_Choose2D (cGH *GH) { DECLARE_CCTK_PARAMETERS int i; asciiioGH *myGH; /* IOASCII extension handle */ int origin_index[3]; /* Specify output planes by indices */ CCTK_REAL origin_phys[3]; /* Specify output planes by coordinates */ GET_SLICE (out2D_xyplane_z, out_xyplane_z, origin_index[0], origin_phys[0]); GET_SLICE (out2D_xzplane_y, out_xzplane_y, origin_index[1], origin_phys[1]); GET_SLICE (out2D_yzplane_x, out_yzplane_x, origin_index[2], origin_phys[2]); myGH = (asciiioGH *) CCTK_GHExtension (GH, "IOASCII"); for (i = 1; i <= CCTK_MaxDim (); i++) { if (i > 1 && i <= 3) { IOUtil_2DPlanes (GH, i, origin_index, origin_phys, myGH->sp2xyz[i-1]); } else { memset (myGH->sp2xyz[i-1], 0, i * sizeof (myGH->sp2xyz[i-1][0])); } } USE_CCTK_PARAMETERS; }
PUBLIC VOID SpGetenv() { BUFFER_DECLARATIONS; BYTE *Name; DEBUG(( "SP.GETENV" )); INIT_BUFFERS; Name = &DataBuffer[0]; GET_SLICE( Size, Name ); *(Name+Size)=0; DEBUG(( "\"%s\"", Name )); if( *Name == 0 ) { PUT_BYTE( SP_ERROR ); } else { if( ( Name=(BYTE *)getenv( Name ) ) == NULL ) { PUT_BYTE( SP_ERROR ); } else { DEBUG(( "\"%s\"", Name )); PUT_BYTE( SP_SUCCESS ); Size = strlen( Name ); PUT_SLICE( Size, Name ); } } REPLY; }
/*@@ @routine IOASCII_Choose1D @author Gabrielle Allen @date July 6 2000 @desc Use parameters to choose the 1D slices through the output data. @enddesc @calls CCTK_ParameterQueryTimesSet IOUtil_1DLines @var GH @vdesc Pointer to CCTK grid hierarchy @vtype cGH * @vio in @endvar @@*/ void IOASCII_Choose1D (cGH *GH) { DECLARE_CCTK_PARAMETERS int i, j; asciiioGH *myGH; int *origin_index[3]; CCTK_REAL *origin_phys[3]; /* allocate arrays for origins */ origin_phys[0] = (CCTK_REAL *) malloc (3 * 3 * sizeof (CCTK_REAL)); origin_phys[1] = origin_phys[0] + 3; origin_phys[2] = origin_phys[1] + 3; origin_index[0] = (int *) malloc (3 * 3 * sizeof (int)); origin_index[1] = origin_index[0] + 3; origin_index[2] = origin_index[1] + 3; /* get slice points */ GET_SLICE (out1D_xline_y, out_xline_y, origin_index[0][1], origin_phys[0][1]); GET_SLICE (out1D_xline_z, out_xline_z, origin_index[0][2], origin_phys[0][2]); GET_SLICE (out1D_yline_x, out_yline_x, origin_index[1][0], origin_phys[1][0]); GET_SLICE (out1D_yline_z, out_yline_z, origin_index[1][2], origin_phys[1][2]); GET_SLICE (out1D_zline_x, out_zline_x, origin_index[2][0], origin_phys[2][0]); GET_SLICE (out1D_zline_y, out_zline_y, origin_index[2][1], origin_phys[2][1]); myGH = (asciiioGH *) CCTK_GHExtension (GH, "IOASCII"); for (i = 1; i <= CCTK_MaxDim (); i++) { if (i <= 3) { IOUtil_1DLines (GH, i, origin_index, origin_phys, myGH->spxyz[i-1]); } else { for (j = 0; j < i; j++) { memset (myGH->spxyz[i-1][j], 0, i); } } } /* free allocated resources */ free (origin_phys[0]); free (origin_index[0]); USE_CCTK_PARAMETERS; }
PUBLIC VOID SpSystem() { BUFFER_DECLARATIONS; BYTE *Command; INT32 Status; DEBUG(( "SP.SYSTEM" )); INIT_BUFFERS; #ifndef UNKNOWN_HOST Command = &DataBuffer[0]; GET_SLICE( Size, Command ); *(Command+Size)=0; DEBUG(( "\"%s\"", Command )); Status = system( Command ); DEBUG(( "status %ld", Status )); PUT_BYTE( SP_SUCCESS ); PUT_INT32( Status ); REPLY; #else PUT_BYTE( SP_UNIMPLEMENTED ); REPLY; #endif }