Updated examples with new functionality

This commit is contained in:
Jeff MacKinnon 2024-12-19 10:08:46 -04:00
parent eb15d16d80
commit 97d1f4e58c

View file

@ -37,7 +37,7 @@
"source": [ "source": [
"## Voltage Drop\n", "## Voltage Drop\n",
"\n", "\n",
"The function voltage_drop returns the total ``voltage drop`` and the ``percentage`` from nominal." "The function voltage_drop returns the total ``voltage drop`` and the ``percentage`` from nominal. The variables are, in order, `voltage`, `current`, `conductor size`, `length`."
] ]
}, },
{ {
@ -48,7 +48,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[24.96, 10.4]" "[15.6, 6.5]"
] ]
}, },
"execution_count": 2, "execution_count": 2,
@ -57,7 +57,7 @@
} }
], ],
"source": [ "source": [
"jmk.voltage_drop(240, 100, '2/0')" "jmk.voltage_drop(240, 100, '2/0',150)"
] ]
}, },
{ {
@ -75,7 +75,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[12.96, 5.4]" "[8.1, 3.3749999999999996]"
] ]
}, },
"execution_count": 3, "execution_count": 3,
@ -84,7 +84,7 @@
} }
], ],
"source": [ "source": [
"jmk.voltage_drop(240, 100, '2/0', material='al')" "jmk.voltage_drop(240, 100, '2/0', 150,material='al')"
] ]
}, },
{ {
@ -102,7 +102,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[3.24, 1.35]" "[2.025, 0.8437499999999999]"
] ]
}, },
"execution_count": 4, "execution_count": 4,
@ -111,7 +111,7 @@
} }
], ],
"source": [ "source": [
"jmk.voltage_drop(240, 100, '2/0', material='al', num_runs=4)" "jmk.voltage_drop(240, 100, '2/0', 150,material='al', num_runs=4)"
] ]
}, },
{ {
@ -166,7 +166,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[350, 2]" "['350', 2]"
] ]
}, },
"execution_count": 6, "execution_count": 6,
@ -186,7 +186,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[400, 3]" "['400', 3]"
] ]
}, },
"execution_count": 7, "execution_count": 7,
@ -206,7 +206,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[400, 3]" "['300', 3]"
] ]
}, },
"execution_count": 8, "execution_count": 8,
@ -226,7 +226,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[400, 3]" "['400', 4]"
] ]
}, },
"execution_count": 9, "execution_count": 9,
@ -238,6 +238,424 @@
"jmk.conductor_size(1000, temp = 75, material = 'al', code = 'CEC', raceway = True, ambient = 30, max = 500)\n" "jmk.conductor_size(1000, temp = 75, material = 'al', code = 'CEC', raceway = True, ambient = 30, max = 500)\n"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes its going to be easier to use a cable list and build a cable schedule from that. Here is an example of how to do that."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, create a cable list with these fields.\n",
"The first line is the columns for the list\n",
"The second line initializes the list with the first cable, and the following lines add to that list.\n",
"\n",
"Finally we can convert this to a dataframe so that it's easier to look at in the notebook."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th>Cable Tag</th>\n",
" <th>To</th>\n",
" <th>From</th>\n",
" <th>Distance [m]</th>\n",
" <th>Wireway</th>\n",
" <th>Voltage</th>\n",
" <th>Phases</th>\n",
" <th>Amps</th>\n",
" <th>Neutral</th>\n",
" <th>Load Type</th>\n",
" <th>Notes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>P100</td>\n",
" <td>CBM</td>\n",
" <td>Utility</td>\n",
" <td>10</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>P101</td>\n",
" <td>Meter</td>\n",
" <td>CBM</td>\n",
" <td>2</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>P102</td>\n",
" <td>CB1</td>\n",
" <td>Meter</td>\n",
" <td>2</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>P103</td>\n",
" <td>CB2</td>\n",
" <td>CB1</td>\n",
" <td>350</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>False</td>\n",
" <td>None</td>\n",
" <td>CUSTOM</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>P104</td>\n",
" <td>TX1</td>\n",
" <td>CB2</td>\n",
" <td>3</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>xfmrp</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>P105</td>\n",
" <td>CB3</td>\n",
" <td>TX1</td>\n",
" <td>3</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>xfmrs</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>P106</td>\n",
" <td>Shed</td>\n",
" <td>CB3</td>\n",
" <td>20</td>\n",
" <td>conduit</td>\n",
" <td>240</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>True</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Cable Tag To From Distance [m] Wireway Voltage Phases Amps Neutral \\\n",
"0 P100 CBM Utility 10 conduit 240 1 100 True \n",
"1 P101 Meter CBM 2 conduit 240 1 100 True \n",
"2 P102 CB1 Meter 2 conduit 240 1 100 True \n",
"3 P103 CB2 CB1 350 conduit 240 1 100 False \n",
"4 P104 TX1 CB2 3 conduit 240 1 100 True \n",
"5 P105 CB3 TX1 3 conduit 240 1 100 True \n",
"6 P106 Shed CB3 20 conduit 240 1 100 True \n",
"\n",
" Load Type Notes \n",
"0 None None \n",
"1 None None \n",
"2 None None \n",
"3 None CUSTOM \n",
"4 xfmrp None \n",
"5 xfmrs None \n",
"6 None None "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cable_list_columns = [['Cable Tag', 'To', 'From', 'Distance [m]', 'Wireway', 'Voltage', 'Phases', 'Amps','Neutral','Load Type','Notes']]\n",
"cable_list = [['P100','CBM','Utility',10,'conduit',240,1,100,True,None,None]]\n",
"cable_list.append(['P101','Meter','CBM',2,'conduit',240,1,100,True])\n",
"cable_list.append(['P102','CB1','Meter',2,'conduit',240,1,100,True])\n",
"cable_list.append(['P103','CB2','CB1',350,'conduit',240,1,100,False,None,'CUSTOM'])\n",
"cable_list.append(['P104','TX1','CB2',3,'conduit',240,1,100,True,'xfmrp'])\n",
"cable_list.append(['P105','CB3','TX1',3,'conduit',240,1,100,True,'xfmrs'])\n",
"cable_list.append(['P106','Shed','CB3',20,'conduit',240,1,100,True])\n",
"\n",
"cable_list_df = pd.DataFrame(cable_list, columns=cable_list_columns)\n",
"cable_list = cable_list_df.values.tolist() # Creates a 2D list that has the None values. Makes it easier to create the append list by hand\n",
"cable_list_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using that list we can create a cable schedule that will have all the necessary information to add to a drawing. This cell creates a 2D list with all the information including for both copper and aluminum conductors. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"add parallel runs\n",
"add parallel runs\n"
]
}
],
"source": [
"cable_schedule_columns = ['CABLE TAG', 'COPPER CONDUCTOR', 'ALUMINUM CONDUCTOR', 'CONDUIT', 'DETAIL', 'NOTE']\n",
"cable_list_schedule = None\n",
"\n",
"for i in range(len(cable_list)):\n",
" \n",
"\n",
" tag = cable_list[i][0]\n",
" distance = cable_list[i][3]\n",
" wireway = cable_list[i][4]\n",
" voltage = cable_list[i][5]\n",
" load = cable_list[i][7]\n",
" neutral = cable_list[i][8]\n",
" load_type = cable_list[i][9]\n",
" \n",
" \n",
" if wireway == 'conduit':\n",
" raceway = True\n",
" else:\n",
" raceway = False\n",
"\n",
" if neutral == False:\n",
" num_conductors = 2\n",
" else:\n",
" num_conductors = 3\n",
"\n",
" cu = 'cu'\n",
" min_conductor_cu = jmk.conductor_size(load, temp = 75, material = cu, raceway = raceway, max = 750, load_type = load_type)\n",
" voltage_drop = jmk.voltage_drop(voltage, load, min_conductor_cu[0], distance,material =cu, num_runs = min_conductor_cu[1])[1]\n",
"\n",
" if voltage_drop < 3:\n",
" conductor_cu = min_conductor_cu[0]\n",
" runs_cu = min_conductor_cu[1]\n",
" else:\n",
" runs_cu = min_conductor_cu[1]\n",
" conductor_cu = jmk.voltage_drop_conductors(voltage,load,distance,v_drop_percent = 0.03,runs = runs_cu,material=cu)\n",
" while True:\n",
" if conductor_cu != 'add parallel runs':\n",
" break\n",
"\n",
" runs_cu = runs_cu + 1\n",
" conductor_cu = jmk.voltage_drop_conductors(voltage,load,distance,v_drop_percent = 0.03,runs = runs_cu,material=cu)\n",
"\n",
" al = 'al'\n",
" min_conductor_al = jmk.conductor_size(load, temp = 75, material = al, raceway = raceway, max = 750, load_type = load_type)\n",
" voltage_drop = jmk.voltage_drop(voltage, load, min_conductor_al[0], distance,material =al, num_runs = min_conductor_al[1])[1]\n",
"\n",
" if voltage_drop < 3:\n",
" conductor_al = min_conductor_al[0]\n",
" runs_al = min_conductor_al[1]\n",
" else:\n",
" runs_al = min_conductor_al[1]\n",
" conductor_al = jmk.voltage_drop_conductors(voltage,load,distance,v_drop_percent = 0.03,runs = runs_al,material=al)\n",
" while True:\n",
" if conductor_al != 'add parallel runs':\n",
" break\n",
"\n",
" runs_al = runs_al + 1\n",
" conductor_al = jmk.voltage_drop_conductors(voltage,load,distance,v_drop_percent = 0.03,runs = runs_al,material=al)\n",
"\n",
"\n",
" if cable_list_schedule == None:\n",
" cable_list_schedule = [[tag,jmk.cable_schedule_naming(conductor_cu,num_conductors,runs = runs_cu,bond='BOND'),jmk.cable_schedule_naming(conductor_al,num_conductors,runs = runs_al,bond='BOND'),wireway,'','']]\n",
" else: \n",
" cable_list_schedule.append([tag,jmk.cable_schedule_naming(conductor_cu,num_conductors,runs = runs_cu,bond='BOND'),jmk.cable_schedule_naming(conductor_al,num_conductors,runs = runs_al,bond='BOND'),wireway,'',''])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And this is what the list looks like in a dataframe. You can then export this dataframe to a CSV or excel format to datalink to a table in your drawings."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CABLE TAG</th>\n",
" <th>COPPER CONDUCTOR</th>\n",
" <th>ALUMINUM CONDUCTOR</th>\n",
" <th>CONDUIT</th>\n",
" <th>DETAIL</th>\n",
" <th>NOTE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>P100</td>\n",
" <td>3C #2AWG + BOND</td>\n",
" <td>3C #1/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>P101</td>\n",
" <td>3C #2AWG + BOND</td>\n",
" <td>3C #1/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>P102</td>\n",
" <td>3C #2AWG + BOND</td>\n",
" <td>3C #1/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>P103</td>\n",
" <td>2x 2C #4/0AWG + BOND</td>\n",
" <td>2x 2C #350kcmil + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>P104</td>\n",
" <td>3C #1AWG + BOND</td>\n",
" <td>3C #2/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>P105</td>\n",
" <td>3C #1AWG + BOND</td>\n",
" <td>3C #2/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>P106</td>\n",
" <td>3C #2AWG + BOND</td>\n",
" <td>3C #1/0AWG + BOND</td>\n",
" <td>conduit</td>\n",
" <td></td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CABLE TAG COPPER CONDUCTOR ALUMINUM CONDUCTOR CONDUIT DETAIL NOTE\n",
"0 P100 3C #2AWG + BOND 3C #1/0AWG + BOND conduit \n",
"1 P101 3C #2AWG + BOND 3C #1/0AWG + BOND conduit \n",
"2 P102 3C #2AWG + BOND 3C #1/0AWG + BOND conduit \n",
"3 P103 2x 2C #4/0AWG + BOND 2x 2C #350kcmil + BOND conduit \n",
"4 P104 3C #1AWG + BOND 3C #2/0AWG + BOND conduit \n",
"5 P105 3C #1AWG + BOND 3C #2/0AWG + BOND conduit \n",
"6 P106 3C #2AWG + BOND 3C #1/0AWG + BOND conduit "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(cable_list_schedule, columns=cable_schedule_columns)\n",
"df"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -256,7 +674,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 13,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -265,7 +683,7 @@
"37" "37"
] ]
}, },
"execution_count": 10, "execution_count": 13,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -283,7 +701,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 14,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -292,7 +710,7 @@
"33" "33"
] ]
}, },
"execution_count": 11, "execution_count": 14,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -300,6 +718,11 @@
"source": [ "source": [
"jmk.panels_per_string(1500,40,beta=-0.5,temp = 2)" "jmk.panels_per_string(1500,40,beta=-0.5,temp = 2)"
] ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
} }
], ],
"metadata": { "metadata": {
@ -318,7 +741,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.2" "version": "3.10.1"
} }
}, },
"nbformat": 4, "nbformat": 4,