/***********************************************************************
*
* ELMER, A Computational Fluid Dynamics Program.
*
* Copyright 1st April 1995 - , Center for Scientific Computing,
* Finland.
*
* All rights reserved. No part of this program may be used,
* reproduced or transmitted in any form or by any means
* without the written permission of CSC.
*
* Address: Center for Scientific Computing
* Tietotie 6, P.O. BOX 405
* 02101 Espoo, Finland
* Tel. +358 0 457 2001
* Telefax: +358 0 457 2302
* EMail: Jari.Jarvinen@csc.fi
************************************************************************/
/***********************************************************************
Program: ELMER Front
Module: ecif_control.h
Language: C++
Date: 01.10.98
Version: 1.00
Author(s): Martti Verho
Revisions:
Abstract: An class for system level control object.
************************************************************************/
#ifndef _ECIF_CONTROL_
#define _ECIF_CONTROL_
#include "ecif_def.h"
#include "ecif_model.h"
#include "ecif_renderer.h"
#include "ecif_userinterface.h"
struct emf_ObjectData_X;
class Control
{
public:
Control(Hinst app_name, UserInterface* u);
void activateUI();
void copyParameters(char* emf_filename);
Input* create_mesh_input( enum ecif_modelDimension m_dim, ifstream& in_file, char* mesh_filename);
void deactivateUI();
void displayModel();
void Exit();
bool getBreakValue(enum frontProcessType process);
bool getColorName(int id, char* buffer) {return theModel->getColorName(id, buffer);}
UserInterface* getGui() {return theUI;}
void getCurrentTimestamp(char* buffer);
Model* getModel() {return theModel;}
ParameterFieldInfo* getParameterFieldInfo(char* key, bool conver_to_lower = true);
Process* getProcess(int process_nbr);
UserInterface* getUI() {return theUI;}
Renderer* getRenderer() {return theRenderer;}
void handleKeyAction(enum keyAction action);
iostream& print_progress_info(iostream& strm, int nbr, int total_nbr, char* text);
bool processExists(int process_nbr);
bool processResume(int process_nbr);
bool processSetPriorityLevel(int process_nbr, priorityLevel priority);
bool processStart(Process* process);
bool processStop(int process_nbr);
bool processSuspend(int process_nbr);
bool readCADFile(char* CAD_filename,
char* CAD_type = NULL,
ecif_modelDimension m_dim = ECIF_ND);
bool readMeshFile(char* mesh_filename,
char* mesh_type = NULL,
bool create_new_model = true,
enum ecif_modelDimension m_dim = ECIF_ND);
bool readModelFile(char* model_filename, bool load_mesh, bool is_batch = false);
void rendererIsClosed();
void setModelDimension(enum ecif_modelDimension model_dim);
void saveElmerMeshFile(char* mesh_dir);
void saveElmerPostMeshFile(char* out_filename);
void saveFrontModelFile(char* out_filename);
void saveMeshInputFile(char* out_filename);
void saveSolverInputFile(char* out_filename);
void saveThetisMeshFile(char* out_filename);
void saveUserSettingsFile(char* out_filename);
void selectBody(int bd_id, int lr_id, bool update_gui = true);
void selectBoundary(int elem_id,
int body1_id, int layer1_id,
int body2_id, int layer2_id,
bool accept_body_change = false, bool update_gui = true);
void selectBoundaries(int nof_elems, int* elem_ids,
int* body1_ids, int* lr1_ids,
int* body2_ids, int* lr2_ids,
bool accept_body_change = false, bool update_gui = true);
void setBreakValue(enum frontProcessType process, bool value);
void setGuiWindowTitle(char* case_name);
void setRendererWindowTitle(char* case_name);
void setWindowTitles(char* case_name);
int unknownFieldMsg(emf_ObjectData_X* object_data, bool is_fatal);
int unknownObjectMsg(emf_ObjectData_X* object_data, bool is_fatal);
void update(int counter, int update_interval);
void updateUI();
bool write_ok(ofstream& out_file, char* out_filename = NULL, char* msg = NULL);
protected:
void updatePreUI();
void updatePostUI();
void createRenderer(enum ecif_modelDimension m_dim, bool display_gmtr = true);
Hinst appInstance;
bool breakEgfInput;
bool breakEgfOutput;
bool breakEmfInput;
bool breakEmfOutput;
bool breakMeshInput;
bool breakMeshOutput;
Model* theModel;
ProcessTable* processTable;
Renderer* theRenderer;
int resetRenderer;
UserInterface* theUI;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1