+static void surf_network_model_init_internal(void)
+{
+ surf_network_model = surf_model_init();
+
+ surf_network_model->name = "network";
+ surf_network_model->action_unref = action_unref;
+ surf_network_model->action_cancel = action_cancel;
+ surf_network_model->action_recycle = action_recycle;
+ surf_network_model->get_remains = action_get_remains;
+
+ surf_network_model->model_private->resource_used = resource_used;
+ surf_network_model->model_private->share_resources = share_resources;
+ surf_network_model->model_private->update_actions_state =
+ update_actions_state;
+ surf_network_model->model_private->update_resource_state =
+ update_resource_state;
+ surf_network_model->model_private->finalize = finalize;
+
+ surf_network_model->suspend = action_suspend;
+ surf_network_model->resume = action_resume;
+ surf_network_model->is_suspended = action_is_suspended;
+ surf_cpu_model->set_max_duration = action_set_max_duration;
+
+ surf_network_model->extension.network.communicate = communicate;
+ surf_network_model->extension.network.get_link_bandwidth =
+ get_link_bandwidth;
+ surf_network_model->extension.network.get_link_latency = get_link_latency;
+ surf_network_model->extension.network.link_shared = link_shared;
+
+ if (!network_maxmin_system)
+ network_maxmin_system = lmm_system_new();
+
+ routing_model_create(sizeof(link_CM02_t),
+ link_new(xbt_strdup("__loopback__"),
+ 498000000, NULL, 0.000015, NULL,
+ SURF_RESOURCE_ON, NULL, SURF_LINK_FATPIPE,
+ NULL));
+}
+
+/************************************************************************/
+/* New model based on optimizations discussed during this thesis */
+/************************************************************************/
+void surf_network_model_init_LegrandVelho(const char *filename)
+{
+
+ if (surf_network_model)
+ return;
+ surf_network_model_init_internal();
+ define_callbacks(filename);
+ xbt_dynar_push(model_list, &surf_network_model);
+ network_solve = lmm_solve;
+
+ latency_factor = 10.4;
+ bandwidth_factor = 0.92;
+ weight_S_parameter = 8775;
+
+ update_model_description(surf_network_model_description,
+ "LV08", surf_network_model);
+}
+
+/***************************************************************************/
+/* The nice TCP sharing model designed by Loris Marchal and Henri Casanova */
+/***************************************************************************/
+/* @TechReport{ rr-lip2002-40, */
+/* author = {Henri Casanova and Loris Marchal}, */
+/* institution = {LIP}, */
+/* title = {A Network Model for Simulation of Grid Application}, */
+/* number = {2002-40}, */
+/* month = {oct}, */
+/* year = {2002} */
+/* } */
+void surf_network_model_init_CM02(const char *filename)
+{
+
+ if (surf_network_model)
+ return;
+ surf_network_model_init_internal();
+ define_callbacks(filename);
+ xbt_dynar_push(model_list, &surf_network_model);
+ network_solve = lmm_solve;
+
+ update_model_description(surf_network_model_description,
+ "CM02", surf_network_model);
+}
+
+void surf_network_model_init_Reno(const char *filename)
+{
+ if (surf_network_model)
+ return;
+ surf_network_model_init_internal();
+ define_callbacks(filename);
+
+ xbt_dynar_push(model_list, &surf_network_model);
+ lmm_set_default_protocol_function(func_reno_f, func_reno_fp, func_reno_fpi);
+ network_solve = lagrange_solve;
+
+ latency_factor = 10.4;
+ bandwidth_factor = 0.92;
+ weight_S_parameter = 8775;
+
+ update_model_description(surf_network_model_description,
+ "Reno", surf_network_model);
+}
+
+
+void surf_network_model_init_Reno2(const char *filename)