// PrintAnalysisInputs is now available as an API routine. // However, this provides a nice example of using the API to interact with // the analysis input information, so it is preserved here. void PrintAnalysisInputsExample( string analysis ) { Print( "Analysis: " + analysis ); Print( "Inputs:" ); array < string > @ inp_array = GetAnalysisInputNames( analysis ); for ( int j = 0; j < int( inp_array.size() ); j++ ) { Print( inp_array[j], false ); int typ = GetAnalysisInputType( analysis, inp_array[j] ); int ndat = GetNumAnalysisInputData( analysis, inp_array[j] ); if ( typ == INT_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetIntAnalysisInput( analysis, inp_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else if ( typ == DOUBLE_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetDoubleAnalysisInput( analysis, inp_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else if ( typ == STRING_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetStringAnalysisInput( analysis, inp_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else if ( typ == VEC3D_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetVec3dAnalysisInput( analysis, inp_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else { Print( "Unrecognized type." ); } } } // PrintResults is now available as an API routine. // However, this provides a nice example of using the API to interacti with // the analysis result information, so it is preserved here. void PrintResultsExample( string results ) { Print( "Results ID: " + results ); array < string > @ res_array = GetAllDataNames( results ); for ( int j = 0; j < int( res_array.size() ); j++ ) { Print( res_array[j], false ); int typ = GetResultsType( results, res_array[j] ); int ndat = GetNumData( results, res_array[j] ); if ( typ == INT_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetIntResults( results, res_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); Print( "" ); } } } else if ( typ == DOUBLE_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetDoubleResults( results, res_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else if ( typ == STRING_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetStringResults( results, res_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else if ( typ == VEC3D_DATA ) { for ( int indx = 0; indx < ndat; indx++ ) { array@ dat = GetVec3dResults( results, res_array[j], indx ); for ( int m = 0; m < int( dat.size() ); m++ ) { Print( dat[m], false ); } Print( "" ); } } else { Print( "Unrecognized type." ); } } Print( "" ); } void main() { string fid = AddGeom( "POD", "" ); string wid = AddGeom( "WING", "" ); SetParmVal( wid, "X_Rel_Location", "XForm", 2.5 ); SetParmVal( wid, "TotalArea", "WingGeom", 25 ); Update(); int nanalysis = GetNumAnalysis(); Print( "Number of registered analyses: " + nanalysis ); Print( "" ); array< string > @analysis_array = ListAnalysis(); for ( int i = 0; i < int( analysis_array.size() ); i++ ) { PrintAnalysisInputsExample( analysis_array[i] ); Print( "" ); } // CompGeom array halfmeshinput = GetIntAnalysisInput( "CompGeom", "HalfMeshFlag" ); halfmeshinput[0] = 1; SetIntAnalysisInput( "CompGeom", "HalfMeshFlag", halfmeshinput ); array writecsvflag = GetIntAnalysisInput( "CompGeom", "WriteCSVFlag" ); writecsvflag[0] = 0; SetIntAnalysisInput( "CompGeom", "WriteCSVFlag", writecsvflag ); string rid = ExecAnalysis( "CompGeom" ); PrintResultsExample( rid ); DeleteGeomVec( GetStringResults( rid, "Mesh_GeomID" ) ); // MassProp string ridmp = ExecAnalysis( "MassProp" ); PrintResultsExample( ridmp ); DeleteGeomVec( GetStringResults( ridmp, "Mesh_GeomID" ) ); // ParasiteDrag string ridpd = ExecAnalysis( "ParasiteDrag" ); PrintResultsExample( ridpd ); // PlanarSlice array norm = GetVec3dAnalysisInput( "PlanarSlice", "Norm" ); norm[0].set_xyz( 0.23, 0.6, 0.15 ); SetVec3dAnalysisInput( "PlanarSlice", "Norm", norm ); array abnd = GetIntAnalysisInput( "PlanarSlice", "AutoBoundFlag" ); abnd[0] = 0; SetIntAnalysisInput( "PlanarSlice", "AutoBoundFlag", abnd ); array send = GetDoubleAnalysisInput( "PlanarSlice", "EndVal" ); send[0] = 5; SetDoubleAnalysisInput( "PlanarSlice", "EndVal", send ); string ridslice = ExecAnalysis( "PlanarSlice" ); PrintResultsExample( ridslice ); DeleteGeomVec( GetStringResults( ridslice, "Mesh_GeomID" ) ); // WaveDrag array wdset = GetIntAnalysisInput( "WaveDrag", "Set" ); wdset[0] = SET_ALL; SetIntAnalysisInput( "WaveDrag", "Set", wdset ); string ridwd = ExecAnalysis( "WaveDrag" ); PrintResultsExample( ridwd ); DeleteGeomVec( GetStringResults( ridwd, "Mesh_GeomID" ) ); // EmintonLord int npt = 21; array x_vec = GetDoubleAnalysisInput( "EmintonLord", "X_vec" ); x_vec.resize( npt ); array area_vec = GetDoubleAnalysisInput( "EmintonLord", "Area_vec" ); area_vec.resize( npt ); for ( int i = 0; i < npt; i++ ) { double xi = i * 1.0 / ( npt - 1 ); x_vec[i] = xi * 5; area_vec[i] = sin( xi * 3.14159 ) * sin( xi * 3.14159 ); } area_vec[0] = 0; area_vec[npt - 1] = 0; SetDoubleAnalysisInput( "EmintonLord", "X_vec", x_vec ); SetDoubleAnalysisInput( "EmintonLord", "Area_vec", area_vec ); string ridel = ExecAnalysis( "EmintonLord" ); PrintResultsExample( ridel ); //==== Check For API Errors ====// while ( GetNumTotalErrors() > 0 ) { ErrorObj err = PopLastError(); Print( err.GetErrorString() ); } }