{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# Compute Engine Client - Solve App Example\n",
    "In this example, we'll use the Compute Engine Client to interact with the \"EC3 Steel Column Design Axial\" using multiple values for the column length. \n",
    "\n",
    "At the end, we'll plot this values against the axial and buckling capacities."
   ],
   "id": "7d3419dc6f11953b"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 1. Load client and interface classes, pandas and matplotlib for plotting, and dotenv and os to load environment variables",
   "id": "6807d542408c9512"
  },
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:12.926919Z",
     "start_time": "2025-02-05T14:52:12.922015Z"
    }
   },
   "source": [
    "from dotenv import load_dotenv\n",
    "import os\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from compute_sdk.clients.engine.compute_client_engine import ComputeClientEngine\n",
    "from compute_sdk.clients.engine.data_objects import ComputeAppRequest"
   ],
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 2. Load the API key from a .env file. \n",
    "\n",
    "NOTE: This key can also be loaded directly, but it's not recommended for security reasons."
   ],
   "id": "b82916310786945e"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:12.941135Z",
     "start_time": "2025-02-05T14:52:12.936925Z"
    }
   },
   "cell_type": "code",
   "source": [
    "load_dotenv()\n",
    "\n",
    "API_KEY = os.getenv(\"API_KEY\")"
   ],
   "id": "31281fc45c275233",
   "outputs": [],
   "execution_count": 15
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 3. Create Compute Engine client\n",
    "This creates the client that you'll use to interact with the Compute Engine. In this example, we'll use it to solve a Compute application. \n",
    "\n",
    "NOTE: You must have a running process of the Compute Engine, otherwise the next line will result in a connection error."
   ],
   "id": "82c66f78de5c56d4"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:16.570954Z",
     "start_time": "2025-02-05T14:52:12.942159Z"
    }
   },
   "cell_type": "code",
   "source": "engine_client = ComputeClientEngine(api_key=API_KEY)",
   "id": "2f0fa093e626991e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "========================== Compute Engine Client v0.1 ======================================\n",
      "Authenticating you with the Compute Engine...\n",
      "Successfully authenticated with the Compute Engine.\n",
      "\n"
     ]
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 4. Create a response object\n",
    "In order to send a request to solve an app, you first need to define a ComputeAppResponse object. \n",
    "This object includes essential data such as the name of the app, the collection uuid, set of input arguments and whether we want to run the solution or not."
   ],
   "id": "ff22b33081d0556f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:16.578773Z",
     "start_time": "2025-02-05T14:52:16.572998Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# First we define the request data\n",
    "app_name=\"EC3_Steel_Column_Axial\"\n",
    "collection_uuid=\"b9518685-d7ca-40e5-86d0-8f39921e7e75\"\n",
    "length_var_name = \"L\"  # This is the name of the variable representing the column length in the App\n",
    "lengths = range(2000, 10000, 100)  # Create length values from 2000-10000 with a step of 100\n",
    "input_args = [{length_var_name: val} for val in lengths]\n",
    "run_solution = True\n",
    "\n",
    "# And now we use this data to create the request object\n",
    "app_request = ComputeAppRequest.from_data(app_name=app_name,\n",
    "                                          input_args=input_args,\n",
    "                                          collection_uuid=collection_uuid,\n",
    "                                          run_solution=run_solution)"
   ],
   "id": "9d42e96d7a8dce3f",
   "outputs": [],
   "execution_count": 17
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 5. Use the Client to solve the app\n",
    "\n",
    "This sends the request to the engine to solve the app. It then returns a response object where we can inspect the payload, and also any error that might have occurred during execution"
   ],
   "id": "51e765ef60c2c842"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:35.065934Z",
     "start_time": "2025-02-05T14:52:16.580782Z"
    }
   },
   "cell_type": "code",
   "source": "results = engine_client.solve_app(app_request=app_request)",
   "id": "6931e08ec0fd8d84",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving app \"EC3_Steel_Column_Axial\" with 80 sets of input arguments.\n",
      "Finished solving app \"EC3_Steel_Column_Axial\" resulting in 80 responses with 0 errors.\n",
      "\n"
     ]
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 6. Extract the capacity values to a pandas dataframe for easier inspection. Then plot the three capacities",
   "id": "213d0228f36fb142"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:35.071068Z",
     "start_time": "2025-02-05T14:52:35.065934Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# Extract the capacity values\n",
    "capacities = {\"strength_util_check_1\": [], \"buckling_util_check_1\": [], \"buckling_util_check_2\": []}\n",
    "capacity_names = list(capacities.keys())\n",
    "for res in results:\n",
    "    for name in capacity_names:\n",
    "        if res.status != 200 or res.logging:  # means something went wrong for this particular result\n",
    "            continue\n",
    "        capacities[name].append(res.results_payload[name][0])\n",
    "capacity_df = pd.DataFrame(capacities)\n",
    "capacity_df[\"Column Length [mm]\"] = lengths\n"
   ],
   "id": "9e5828cab747e895",
   "outputs": [],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-05T14:52:35.150820Z",
     "start_time": "2025-02-05T14:52:35.072127Z"
    }
   },
   "cell_type": "code",
   "source": [
    "capacity_df.plot(x=\"Column Length [mm]\", ylabel=\"Capacity [%]\")\n",
    "plt.show()"
   ],
   "id": "d8373d37ae3de2e2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 20
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
