示例#1
0
zOPER_EXPORT zLONG OPERATION
AddRetCode( zVIEW vSubtask )
{
   zLONG lIDNumber;

   GetVariableID( &lIDNumber, "nZRetCode" );

   if ( lIDNumber == -1 ) // an entity does not exist ... add it
   {
      lIDNumber = AddVariableEntityToPI( vSubtask, "nZRetCode", qTSHORT, 0, 0 );
   }

   return( lIDNumber );
}
示例#2
0
bool CNetCDFTraj::ReadHeader(CAmberTopology* p_top)
{
    if( p_top == NULL ){
        INVALID_ARGUMENT("p_top == NULL");
    }

    if( NCID < 0 ) {
        ES_ERROR("file is not opened");
        return(false);
    }

    HasBox = p_top->BoxInfo.GetType() != AMBER_BOX_NONE;
    NumOfTopologyAtoms = p_top->AtomList.GetNumberOfAtoms();

    bool result = true;

    result &= GetVariableAttribute(NC_GLOBAL,"title",Title);
    result &= GetVariableAttribute(NC_GLOBAL,"application",Application);
    result &= GetVariableAttribute(NC_GLOBAL,"program",Program);
    result &= GetVariableAttribute(NC_GLOBAL,"programVersion",Version);
    result &= GetVariableAttribute(NC_GLOBAL,"Conventions",Conventions);
    result &= GetVariableAttribute(NC_GLOBAL,"ConventionVersion",ConventionVersion);

    if( Conventions != "AMBER" ) {
        CSmallString error;
        error << "illegal conventions '" << Conventions << "', expecting 'AMBER'";
        ES_ERROR(error);
        return(false);
    }
    if( ConventionVersion != "1.0" ) {
        CSmallString error;
        error << "illegal convention version '" << ConventionVersion << "', expecting '1.0'";
        ES_ERROR(error);
        return(false);
    }

    GetDimensionInfo("frame", &TotalSnapshots);
    GetDimensionInfo("spatial", &Spatial);
    GetDimensionInfo("atom", &ActualAtoms);

    if( Spatial != 3 ) {
        CSmallString error;
        error << "three dim expected but '" << Spatial << "' provided";
        ES_ERROR(error);
        return(false);
    }

    if( ActualAtoms != NumOfTopologyAtoms ) {
        CSmallString error;
        error << "number of atoms in the topology '" << ActualAtoms << "' is different than in topology '" << NumOfTopologyAtoms << "'";
        ES_ERROR(error);
        return(false);
    }

    // sanity check - spatial variable ---------------------

    SpatialVID = GetVariableID("spatial");
    if( SpatialVID < 0 ) {
        return(false);
    }

    size_t  start[3],count[3];
    char    xyz[3];
    int     err;

    start[0] = 0;
    count[0] = Spatial;
    xyz[0] = (char) 0;

    err = nc_get_vara_text(NCID,SpatialVID,start,count,xyz);
    if( err != NC_NOERR ) {
        CSmallString error;
        error << "unable to get spatial names (" << nc_strerror(err) << ")";
        ES_ERROR(error);
        return(false);
    }

    if( (xyz[0] != 'x') || (xyz[1] != 'y') || (xyz[2] != 'z') ) {
        CSmallString error;
        error << "incorrect spatial labels (" << xyz[0] << "," << xyz[1] << "," << xyz[2] << ")";
        ES_ERROR(error);
        return(false);
    }

    // sanity check - time ---------------------------------
    TimeVID = GetVariableID("time");
    if( TimeVID < 0 ) {
        return(false);
    }
    CSmallString unit;
    if( GetVariableAttribute(TimeVID,"units",unit) == false ) {
        return(false);
    }
    if( unit != "picosecond" ) {
        CSmallString error;
        error << "incorrect unit for time (" << unit << "), requested picosecond";
        ES_ERROR(error);
        return(false);
    }

    // sanity check - coordinates --------------------------
    CoordinateVID = GetVariableID("coordinates");
    if( CoordinateVID < 0 ) {
        return(false);
    }
    if( GetVariableAttribute(CoordinateVID,"units",unit) == false ) {
        return(false);
    }
    if( unit != "angstrom" ) {
        CSmallString error;
        error << "incorrect unit for coordinates (" << unit << "), requested angstrom";
        ES_ERROR(error);
        return(false);
    }

    CurrentSnapshot = 0;
    if( Coordinates != NULL ) {
        delete Coordinates;
    }
    Coordinates = new float[ActualAtoms*3];

    // sanity check - box ----------------------------------
    if( HasBox ){
        // optional
        CellLengthVID = GetVariableID("cell_lengths");
        CellAngleVID = GetVariableID("cell_angles");
    }

    return(true);
}
示例#3
0
//
// OPERATION: AddCompare
//
// DESCRIPTION: AddCompare
//
zOPER_EXPORT zLONG OPERATION
AddCompareToView( zVIEW   vSubtask,
                  zVIEW   vTargetView,
                  zPCHAR  pchOperationName,
                  LPQEXPRSTRUCT sLeft,
                  zPCHAR  pchLeftLiteral,
                  LPQEXPRSTRUCT sRight,
                  zPCHAR  pchRightLiteral,
                  zLONG   lOperator )
{
   zLONG lIDNumber;
   zLONG lZKeyNumber;
   zCHAR szViewName[ 33 ];
   zLONG lViewID;
   zCHAR szEntityName[ 33 ];
   zLONG lEntityID;
   zCHAR szAttributeName[ 33 ];
   zLONG lAttributeID;

   GetOperationClass( vSubtask, &lIDNumber, pchOperationName );

   lZKeyNumber = GetOperationZKey( vSubtask, qZEIDONOPERATION, pchOperationName );
   if ( lZKeyNumber < 0 )
      return( -1 ); // this is an error situation

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATIONCALL, lIDNumber,
                            qTSHORT, pchOperationName, lZKeyNumber, 0 );
   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, "(", qOPENOPER, 0 );
   SplitQualifier( pchLeftLiteral, szViewName, szEntityName, szAttributeName );

   GetVariableID( &lViewID, szViewName );
   AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qNUMERIC, qTVIEW, "", lViewID, 0 );

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 );

   // was a variable entity name
   if ( sLeft->lDataClass == qENTITYISUNKNOWN ||
        sLeft->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN )
   {
      GetVariableID( &lEntityID, szEntityName );
      AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT,
                               qTENTITYNAME, szEntityName, lEntityID, 0 );
   }
   else // was a  constant
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT,
                               qTENTITYNAME, szEntityName, 0, 0 );
   }

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, ",", qCOMMA, 0 );

   // was a variable attribute name
   if ( sLeft->lDataClass == qATTRIBUTEISUNKNOWN ||
        sLeft->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN )
   {
      GetVariableID( &lAttributeID, szAttributeName );
      AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT,
                               qTATTRIBUTENAME, szAttributeName, lAttributeID, 0 );
   }
   else // was a  constant
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT,
                               qTATTRIBUTENAME, szAttributeName, 0, 0 );
   }

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, ",", qCOMMA, 0 );

   if ( sRight->lElementClass == qVARIABLE || sRight->lElementClass == qCONSTANT )
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, sRight->lElementClass, sRight->lDataClass,
                               sRight->lDataType, pchRightLiteral, sRight->lOffset, 0 );
      AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                               qTINTEGER, ")", qCLOSEOPER, 0 );
      AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                               qTINTEGER, "", lOperator, 0 );
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qNUMERIC,
                               qTINTEGER, "0", 0, 0 );
      return( 0 );
   }

   SplitQualifier( pchRightLiteral, szViewName, szEntityName, szAttributeName );

   GetVariableID( &lViewID, szViewName );

   AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qNUMERIC,
                            qTVIEW, "", lViewID, 0 );
   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, ",", qCOMMA, 0 );

   // was a variable entity name
   if ( sRight->lDataClass == qENTITYISUNKNOWN ||
        sRight->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN )
   {
      GetVariableID( &lEntityID, szEntityName );
      AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT,
                               qTENTITYNAME, szEntityName, lEntityID, 0 );
   }
   else // was a  constant
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT,
                               qTENTITYNAME, szEntityName, 0, 0 );
   }

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, ",", qCOMMA, 0 );

   // was a variable attribute name
   if ( sRight->lDataClass == qATTRIBUTEISUNKNOWN ||
        sRight->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN )
   {
      GetVariableID( &lAttributeID, szAttributeName );
      AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT,
                               qTATTRIBUTENAME, szAttributeName, lAttributeID, 0 );
   }
   else // was a  constant
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT,
                               qTATTRIBUTENAME, szAttributeName, 0, 0 );
   }

   AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                            qTINTEGER, ")", qCLOSEOPER, 0 );
   if ( lOperator > 0 )
   {
      AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC,
                               qTINTEGER, "", lOperator, 0 );
      AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qNUMERIC,
                               qTINTEGER, "0", 0, 0 );
   }

   return( 0 );
}