Commit fddbce4c authored by Savva Golubitsky's avatar Savva Golubitsky

comments ready, but code is ugly. needs to be refactored

parent 7188aaf9
...@@ -32,11 +32,13 @@ class Edge(object): ...@@ -32,11 +32,13 @@ class Edge(object):
'_io_mapping', '_io_mapping',
'preprocess', 'preprocess',
'postprocess', 'postprocess',
'order' 'order',
'comment'
] ]
def __init__(self, predicate, morphism, def __init__(self, predicate, morphism,
io_mapping=InOutMapping(), io_mapping=InOutMapping(),
order=0 order=0,
comment=""
): ):
self.pred_f = predicate self.pred_f = predicate
self.morph_f = morphism self.morph_f = morphism
...@@ -44,6 +46,8 @@ class Edge(object): ...@@ -44,6 +46,8 @@ class Edge(object):
self.preprocess = lambda pd: None self.preprocess = lambda pd: None
self.postprocess = lambda pd: None self.postprocess = lambda pd: None
self.order = int(0 if order is None else order) self.order = int(0 if order is None else order)
print("Edge:", comment)
self.comment = comment
def predicate(self, data, dynamic_keys_mapping={}): def predicate(self, data, dynamic_keys_mapping={}):
proxy_data = self._io_mapping.build_proxy_data(data, dynamic_keys_mapping) proxy_data = self._io_mapping.build_proxy_data(data, dynamic_keys_mapping)
......
...@@ -13,11 +13,13 @@ class Func(): ...@@ -13,11 +13,13 @@ class Func():
__slots__ = ( __slots__ = (
'module', 'module',
'func', 'func',
'comment',
'name' 'name'
) )
def __init__(self, module="", name="", dummy=False,func=None): def __init__(self, module="", name="", dummy=False,func=None, comment=''):
self.module = module self.module = module
self.name = name self.name = name
self.comment=comment.replace("\0", " ")
if module =="" or name =="" or module is None or name is None: if module =="" or name =="" or module is None or name is None:
dummy = True dummy = True
if func is not None: if func is not None:
...@@ -157,6 +159,7 @@ class State: ...@@ -157,6 +159,7 @@ class State:
self.is_term_state=False self.is_term_state=False
self._branching_states_history = None self._branching_states_history = None
self._proxy_state=None self._proxy_state=None
self.comment = ""
def idle_run(self, idle_run_type, branching_states_history): def idle_run(self, idle_run_type, branching_states_history):
def __sort_by_order(tr): def __sort_by_order(tr):
......
This diff is collapsed.
...@@ -32,22 +32,90 @@ int main(int argc, char const *argv[]) ...@@ -32,22 +32,90 @@ int main(int argc, char const *argv[])
auto data = com::Anymap(); auto data = com::Anymap();
//Predicates //Predicates
auto test_funcs.simplest_positiveness_predicate = LoadPred("test_funcs.simplest", "positiveness_predicate"); auto test_funcs.simplest_positiveness_predicate = LoadPred("test_funcs.simplest", "positiveness_predicate");
auto libcomsdk_pass_predicate = LoadPred("libcomsdk", "pass_predicate");
//Entry functions //Entry functions
auto test_funcs.simplest_increment_a_edge = LoadEntry("test_funcs.simplest", "increment_a_edge"); auto test_funcs.simplest_increment_a_edge = LoadEntry("test_funcs.simplest", "increment_a_edge");
auto libgcdfes_pso_swarm_init = LoadEntry("libgcdfes", "pso_swarm_init");
auto libgcdfes_pso_agent_init = LoadEntry("libgcdfes", "pso_agent_init");
auto libgcdfes_pso_task_data_reinit = LoadEntry("libgcdfes", "pso_task_data_reinit");
auto libgcdfes_pso_hom_agent_postproc = LoadEntry("libgcdfes", "pso_hom_agent_postproc");
auto libgcdfes_pso_agent_reinit = LoadEntry("libgcdfes", "pso_agent_reinit");
auto libgcdfes_pso_swarm_analysing = LoadEntry("libgcdfes", "pso_swarm_analysing");
auto libgcdfes_pso_swarm_reinit = LoadEntry("libgcdfes", "pso_swarm_reinit");
auto libcomsdk_pass_processor = LoadEntry("libcomsdk", "pass_processor");
//Selectors //Selectors
//Branch tokens //Branch tokens
bool* SEL___BEGIN__ = new bool[1]; bool* SEL___BEGIN__ = new bool[1];
std::fill_n(SEL___BEGIN__, 1, true); std::fill_n(SEL___BEGIN__, 1, true);
bool* SEL_gcdhom_inverted_model_pso1_S_4 = new bool[1];
std::fill_n(SEL_gcdhom_inverted_model_pso1_S_4, 1, false);
bool* SEL_gcdhom_inverted_model_pso1_S_6 = new bool[2];
std::fill_n(SEL_gcdhom_inverted_model_pso1_S_6, 2, false);
bool* SEL_gcdhom_inverted_model_pso1_S_7 = new bool[2];
std::fill_n(SEL_gcdhom_inverted_model_pso1_S_7, 2, false);
bool* SEL___END__ = new bool[0]; bool* SEL___END__ = new bool[0];
std::fill_n(SEL___END__, 0, false); std::fill_n(SEL___END__, 0, false);
if (SEL___BEGIN__[0]){ if (SEL___BEGIN__[0]){
check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate"); check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate");//
test_funcs.simplest_increment_a_edge(data); test_funcs.simplest_increment_a_edge(data);//
check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate"); check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
test_funcs.simplest_increment_a_edge(data); libgcdfes_pso_swarm_init(data);//Инициализация метода роя частиц.
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_swarm_init(data);//Инициализация роя частиц.
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_agent_init(data);//Инициализация отдельной частицы в рамках метода роя частиц.
} }
if (!(false || SEL___BEGIN__[0] )){ gcdhom_inverted_model_pso1_S_4:
if (!(false || SEL___BEGIN__[0] || SEL_gcdhom_inverted_model_pso1_S_6[0] || SEL_gcdhom_inverted_model_pso1_S_7[0] )){
for (int seli = 0; seli < 1; seli++)
SEL_gcdhom_inverted_model_pso1_S_4[seli]=false;
}else {
for (int seli = 0; seli < 1; seli++)
SEL_gcdhom_inverted_model_pso1_S_4[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_4[0]){
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_task_data_reinit(data);//Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения.
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_hom_agent_postproc(data);//Постпроцессинг после решения отдельной задачи методом асимптотического осреднения.
}
gcdhom_inverted_model_pso1_S_6:
if (!(false || SEL_gcdhom_inverted_model_pso1_S_4[0] )){
for (int seli = 0; seli < 2; seli++)
SEL_gcdhom_inverted_model_pso1_S_6[seli]=false;
}else {
for (int seli = 0; seli < 2; seli++)
SEL_gcdhom_inverted_model_pso1_S_6[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_6[0]){
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_agent_reinit(data);//Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц.
goto gcdhom_inverted_model_pso1_S_4;
}
if (SEL_gcdhom_inverted_model_pso1_S_6[1]){
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_swarm_analysing(data);//Анализ всего роя частиц в рамках метода роя частиц.
}
gcdhom_inverted_model_pso1_S_7:
if (!(false || SEL_gcdhom_inverted_model_pso1_S_6[1] )){
for (int seli = 0; seli < 2; seli++)
SEL_gcdhom_inverted_model_pso1_S_7[seli]=false;
}else {
for (int seli = 0; seli < 2; seli++)
SEL_gcdhom_inverted_model_pso1_S_7[seli]=true;
}
if (SEL_gcdhom_inverted_model_pso1_S_7[0]){
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libgcdfes_pso_swarm_reinit(data);//Реинициализация всего роя частиц в рамках метода роя частиц.
goto gcdhom_inverted_model_pso1_S_4;
}
if (SEL_gcdhom_inverted_model_pso1_S_7[1]){
//ПАСС, морфизм.
check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");//
libcomsdk_pass_processor(data);//
}
if (!(false || SEL_gcdhom_inverted_model_pso1_S_7[1] )){
for (int seli = 0; seli < 0; seli++) for (int seli = 0; seli < 0; seli++)
SEL___END__[seli]=false; SEL___END__[seli]=false;
}else { }else {
......
...@@ -27,7 +27,7 @@ def copy_to_c(data): ...@@ -27,7 +27,7 @@ def copy_to_c(data):
data['c'] = data['a'] data['c'] = data['a']
def selector_a_nonpositive(data): def selector_a_nonpositive(data):
res = data['a'] > 0 res = data['a'] < 0
return [res, not res] return [res, not res]
def true_predicate(data): def true_predicate(data):
......
...@@ -9,13 +9,6 @@ from comsdk.graph import * ...@@ -9,13 +9,6 @@ from comsdk.graph import *
from comsdk.edge import Edge from comsdk.edge import Edge
prsr = pars.Parser(tocpp=True) prsr = pars.Parser(tocpp=True)
data = {"a":10} data = {"a":10, "b":0}
gr = prsr.parse_file('./tests/adot/testsub.adot') gr = prsr.parse_file('./tests/adot/testsub.adot')
# gr.run(data) prsr.generate_cpp()
# print (data) \ No newline at end of file
print(prsr.generate_cpp())
# for b in prsr.bushes:
digraph ADD { digraph ADD {
FUNC [module=test_funcs.simplest, entry_func=increment_a_edge] FUNC [module=test_funcs.simplest, entry_func=increment_b_edge]
PRED [module=test_funcs.simplest, entry_func=positiveness_predicate] PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
MORPH [predicate=PRED, function=FUNC] MORPH [predicate=PRED, function=FUNC, comment="ADD"]
__BEGIN__ -> ST [morphism = MORPH] __BEGIN__ -> ST [morphism = MORPH]
ST -> __END__ ST -> __END__
} }
\ No newline at end of file
digraph gcdfem_preprocessor digraph gcdhom_inverted_model_pso
{ {
// Определение функций-обработчиков // Определение функций-обработчиков
PASS_PROCESSOR [module=libcomsdk, entry_func=pass_processor, comment=""] PASS_PROCESSOR [module=libcomsdk, entry_func=pass_processor]
FEM_TASK_LOAD [module=libgcdfes, entry_func=fem_task_loader, comment=""] CHECK_PSO_AGENT_REINIT [module=libgcdfes, entry_func=check_pso_agent_reinit, comment="Проверка о необходимости реинициализации отдельной частицы (смещение частицы) в рое в рамках метода роя частиц."]
SLD_DATA_LOAD [module=libgcdfes, entry_func=sld_data_loader, comment=""] CHECK_PSO_SWARM_REINIT [module=libgcdfes, entry_func=check_pso_swarm_reinit, comment="Проверка о необходимости реинициализации всего роя частиц в рамках метода роя частиц."]
BC_LOAD [module=libgcdfes, entry_func=bc_loader, comment=""]
CMP_PREPARE [module=libgcdfes, entry_func=computation_prepare, comment=""] PSO_AGENT_REINIT [module=libgcdfes, entry_func=pso_agent_reinit, comment="Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц."]
MESH_LOAD [module=libgcdfes, entry_func=fe_mesh_loader, comment=""] PSO_SWARM_REINIT [module=libgcdfes, entry_func=pso_swarm_reinit, comment="Реинициализация всего роя частиц в рамках метода роя частиц."]
FE_TYPE_LOAD [module=libgcdfes, entry_func=fe_type_loader, comment=""]
PSO_SWARM_ANALYSING [module=libgcdfes, entry_func=pso_swarm_analysing, comment="Анализ всего роя частиц в рамках метода роя частиц."]
PSO_HOM_AGENT_POSTPROC [module=libgcdfes, entry_func=pso_hom_agent_postproc, comment="Постпроцессинг после решения отдельной задачи методом асимптотического осреднения."]
PSO_TASK_DATA_REINIT [module=libgcdfes, entry_func=pso_task_data_reinit, comment="Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения."]
PSO_AGENT_INIT [module=libgcdfes, entry_func=pso_agent_init, comment="Инициализация отдельной частицы в рамках метода роя частиц."]
PSO_SWARM_INIT [module=libgcdfes, entry_func=pso_swarm_init, comment="Инициализация роя частиц."]
PSO_INIT [module=libgcdfes, entry_func=pso_swarm_init, comment="Инициализация метода роя частиц."]
// Определение функций-предикатов // Определение функций-предикатов
PASS_PREDICATE [module=libcomsdk, entry_func=pass_predicate, comment=""] PASS_PREDICATE [module=libcomsdk, entry_func=pass_predicate]
// Определение морфизмов // Определение морфизмов
FEM_TASK_MORPHISM [predicate=PASS_PREDICATE, function=FEM_TASK_LOAD] PASS_MORPHISM [predicate=PASS_PREDICATE, function=PASS_PROCESSOR, comment="ПАСС, морфизм."]
SLD_DATA_MORPHISM [predicate=PASS_PREDICATE, function=SLD_DATA_LOAD]
BC_LOADER_MORPHISM [predicate=PASS_PREDICATE, function=BC_LOAD]
CMP_PREPARE_MORPHISM [predicate=PASS_PREDICATE, function=CMP_PREPARE]
MESH_CREATOR_MORPHISM [predicate=PASS_PREDICATE, function=MESH_LOAD]
FE_TYPE_LOADER_MORPHISM [predicate=PASS_PREDICATE, function=FE_TYPE_LOAD]
// Определение морфизмов PSO_AGENT_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_AGENT_REINIT]
PASS_MORPHISM [predicate=PASS_PREDICATE, function=PASS_PROCESSOR] PSO_SWARM_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_REINIT]
PSO_SWARM_ANALYSING_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_ANALYSING]
PSO_HOM_AGENT_POSTPROC_MORPHISM [predicate=PASS_PREDICATE, function=PSO_HOM_AGENT_POSTPROC]
PSO_TASK_DATA_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_TASK_DATA_REINIT]
PSO_AGENT_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_AGENT_INIT]
PSO_SWARM_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_INIT]
PSO_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_INIT]
// Определение атрибутов узлов // Определение атрибутов узлов
S_1 [parallelism=threading] S_1 [subgraph=gcdhom_preprocessor.adot]
S_5 [subgraph=gcdhom_processor.adot]
S_6 [selector=CHECK_PSO_AGENT_REINIT]
S_7 [selector=CHECK_PSO_SWARM_REINIT]
// Определение топологии графовой модели метода конечных элементов // Определение топологии графовой модели метода конечных элементов
__BEGIN__ -> S_1 __BEGIN__ -> S_1
S_1 -> S_2, S_3, S_4, S_5 [morphism=(FEM_TASK_MORPHISM, SLD_DATA_MORPHISM, BC_LOADER_MORPHISM, CMP_PREPARE_MORPHISM)] S_1 -> S_2 [morphism=PSO_INIT_MORPHISM]
S_2, S_3 -> S_6 [morphism=(MESH_CREATOR_MORPHISM, PASS_MORPHISM)] S_2 -> S_3 [morphism=PSO_SWARM_INIT_MORPHISM]
S_6 -> S_7 [morphism=FE_TYPE_LOADER_MORPHISM] S_3 -> S_4 [morphism=PSO_AGENT_INIT_MORPHISM]
S_7, S_4, S_5 -> S_8 [morphism=(PASS_MORPHISM, PASS_MORPHISM, PASS_MORPHISM)] S_4 -> S_5 [morphism=PSO_TASK_DATA_REINIT_MORPHISM]
S_8 -> __END__ S_5 -> S_6 [morphism=PSO_HOM_AGENT_POSTPROC_MORPHISM]
S_6 -> S_4, S_7 [morphism=(PSO_AGENT_REINIT_MORPHISM, PSO_SWARM_ANALYSING_MORPHISM), order=(10,20)]
S_7 -> S_4, S_8 [morphism=(PSO_SWARM_REINIT_MORPHISM, PASS_MORPHISM), order=(30,40)]
S_8 -> __END__ [comment = "Расчет завершён."]
} }
...@@ -2,10 +2,13 @@ digraph TEST_SUB { ...@@ -2,10 +2,13 @@ digraph TEST_SUB {
FUNC [module=test_funcs.simplest, entry_func=increment_a_edge] FUNC [module=test_funcs.simplest, entry_func=increment_a_edge]
PRED [module=test_funcs.simplest, entry_func=positiveness_predicate] PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
MORPH [predicate=PRED, function=FUNC] MORPH [predicate=PRED, function=FUNC]
SEL [module=test_funcs.simplest, entry_func=selector_a_nonpositive]
ST2 [subgraph = tests/adot/add.adot] ST2 [subgraph = tests/adot/file.adot]
ST3 [selector = SEL]
__BEGIN__ -> ST1 __BEGIN__ -> ST1 [morphism = MORPH]
ST1 -> ST2 [morphism=MORPH] ST1 -> ST2
ST2 -> __END__ ST2 -> ST3
ST3 -> __END__
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment