// Initialize
//------------------------------------------------------------------------------
bool XCodeProjectNode::Initialize( NodeGraph & nodeGraph, const BFFIterator & iter, const Function * function )
{
	ProjectGeneratorBase::FixupAllowedFileExtensions( m_ProjectAllowedFileExtensions );

	Dependencies dirNodes( m_ProjectInputPaths.GetSize() );
	if ( !function->GetDirectoryListNodeList( nodeGraph, iter, m_ProjectInputPaths, m_ProjectInputPathsExclude, m_ProjectFilesToExclude, true, &m_ProjectAllowedFileExtensions, "ProjectInputPaths", dirNodes ) )
	{
		return false; // GetDirectoryListNodeList will have emitted an error
	}

	// TODO:B use m_ProjectFiles instead of finding it again
	Dependencies fileNodes( m_ProjectFiles.GetSize() );
	if ( !function->GetNodeList( nodeGraph, iter, ".ProjectFiles", fileNodes ) )
	{
		return false; // GetNodeList will have emitted an error		
	}

	ASSERT( m_StaticDependencies.IsEmpty() );
	m_StaticDependencies.Append( dirNodes );
	m_StaticDependencies.Append( fileNodes );

	return true;
}
Example #2
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // temp vars
    QStringList pieces;
    QString line;
    QString delimiterPattern(","), tempData;

    int dimension = 2;
    int nInc = 100;

    // ========================= NODES FILE (open and read nodes file) =========================
    QString nodesFile = QFileDialog::getOpenFileName(this, QObject::tr("Open Nodes File"),"",QObject::tr("Data (*.dat*);; Text (*.txt*)"));

    QFile fileNodes(nodesFile);
    fileNodes.open(QIODevice::ReadOnly | QIODevice::Text);

    // get number of lines
    QTextStream inNodes(&fileNodes);

    NodeList nodes;
    DoubleList coords(2);
    DoubleList coordsPrescribed(2);
    double x1,x2,x1t,x2t;
    bool bflag;

    int idxNode = 0;
    while (!inNodes.atEnd())
    {
        // read node
        line = inNodes.readLine();
        pieces = line.split(delimiterPattern);

        tempData = pieces.value(0);
        x1 = tempData.toDouble();
        tempData = pieces.value(1);
        x2 = tempData.toDouble();
        tempData = pieces.value(2);
        bflag = tempData.toDouble();
        bflag = (bool) bflag;
        tempData = pieces.value(3);
        x1t = tempData.toDouble();
        tempData = pieces.value(4);
        x2t = tempData.toDouble();

        coords[0] = x1;
        coords[1] = x2;

        coordsPrescribed[0] = x1t;
        coordsPrescribed[1] = x2t;

        // write nodes array
        if (bflag)
        {
            nodes.push_back(Node());
            nodes[idxNode].initializeNode(coords,idxNode,dimension,bflag);
            nodes[idxNode].setPrescribedDisplacement(coordsPrescribed);
        }
        else
        {
            nodes.push_back(Node());
            nodes[idxNode].initializeNode(coords,idxNode,dimension,bflag);
        }

        // update counter
        idxNode++;

    }

    // total number of nodes
    int nNodes = idxNode;

    fileNodes.close();


    // ========================= ELEMENTS FILE (open and read nodes file) =========================

    QString elementsFile = QFileDialog::getOpenFileName(this, QObject::tr("Open Elements File"),"",QObject::tr("Data (*.dat*);; Text (*.txt*)"));

    QFile fileElements(elementsFile);
    fileElements.open(QIODevice::ReadOnly | QIODevice::Text);

    // get number of lines
    QTextStream inElements(&fileElements);

    ElementList elements;
    int idxN1,idxN2;
    double cl,ch,cutoff;

    int idxElement = 0;
    while (!inElements.atEnd())
    {
        // read node
        line = inElements.readLine();
        pieces = line.split(delimiterPattern);

        tempData = pieces.value(0);
        idxN1 = tempData.toDouble();
        idxN1 = (int) idxN1;
        tempData = pieces.value(1);
        idxN2 = tempData.toDouble();
        idxN2 = (int) idxN2;
        tempData = pieces.value(2);
        cl = tempData.toDouble();
        tempData = pieces.value(3);
        ch = tempData.toDouble();
        tempData = pieces.value(4);
        cutoff = tempData.toDouble();

        // write elements array
        elements.push_back(Element(nodes[idxN1],nodes[idxN2],cl,ch,cutoff));

        // update counter
        idxElement++;

    }

    // total number of nodes
    int nElements = idxElement;

    fileElements.close();


    // ========================= INITIALIZE NETWORK AND SOLVE =========================

    Network network(nodes,elements,nNodes,nElements,nInc);

}