mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-08-06 04:21:33 +00:00
0f0c49da62
A lot of old files from old documentation systems etc. is in package. These are now removed or moved. Old notebooks are in docs/tutorials. This PR closes issue #124.
604 lines
18 KiB
Plaintext
604 lines
18 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Abaqus umat interface"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Author(s): Tero Frondelius"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Abstract:** making the initial version to call Abaqus umat"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"--2015-07-25 22:07:34-- http://www.eng.ox.ac.uk/NP/ICP/plasticity_imp/code_imp.f\n",
|
||
"Resolving www.eng.ox.ac.uk (www.eng.ox.ac.uk)... 163.1.223.199\n",
|
||
"Connecting to www.eng.ox.ac.uk (www.eng.ox.ac.uk)|163.1.223.199|:80... connected.\n",
|
||
"HTTP request sent, awaiting response... 200 OK\n",
|
||
"Length: 7458 (7,3K) [text/plain]\n",
|
||
"Saving to: ‘code_imp.f.1’\n",
|
||
"\n",
|
||
" 0K ....... 100% 282M=0s\n",
|
||
"\n",
|
||
"2015-07-25 22:07:34 (282 MB/s) - ‘code_imp.f.1’ saved [7458/7458]\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"run(`wget http://www.eng.ox.ac.uk/NP/ICP/plasticity_imp/code_imp.f`)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"***********************************************************************************\n",
|
||
"** UMAT, FOR ABAQUS/STANDARD INCORPORATING ELASTIC-PLASTIC LINEAR **\n",
|
||
"** ISOTROPIC HARDENING. LARGE DEFORMATION FORMULATION FOR PLANE STRAIN **\n",
|
||
"** AND AXI-SYMMETRIC ELEMENTS. IMPLICIT INTEGRATION WITH CONSISTENT JACOBIAN **\n",
|
||
"***********************************************************************************\n",
|
||
"***********************************************************************************\n",
|
||
"**\n",
|
||
"**\n",
|
||
"**\n",
|
||
"*USER SUBROUTINE\n",
|
||
" SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,\n",
|
||
" 1 RPL,DDSDDT,DRPLDE,DRPLDT,\n",
|
||
" 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,\n",
|
||
" 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,\n",
|
||
" 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)\n",
|
||
"C\n",
|
||
" INCLUDE 'ABA_PARAM.INC'\n",
|
||
"C\n",
|
||
" CHARACTER*80 CMNAME\n",
|
||
"C\n",
|
||
"C\n",
|
||
" DIMENSION STRESS(NTENS),STATEV(NSTATV),\n",
|
||
" 1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),\n",
|
||
" 2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),\n",
|
||
" 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)\n",
|
||
"C\n",
|
||
"C\n",
|
||
" PARAMETER (M=3,N=3,ID=3,ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0,\n",
|
||
" + SIX=6.D0, NINE=9.D0, TOLER=1.D-5)\n",
|
||
"C\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"run(`head -30 code_imp.f`)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## some implicit type castings"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"f = open(\"ABA_PARAM.INC\",\"w\")\n",
|
||
"write(f,\" implicit real*8(a-h,o-z)\\n\")\n",
|
||
"write(f,\" parameter (nprecd=2)\\n\")\n",
|
||
"close(f)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Let's compile the shared library"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"run(`gfortran -shared -fPIC -o libumat.so code_imp.f`)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Some Abaqus umat interface definitions\n",
|
||
"\n",
|
||
"|variable | explanation |\n",
|
||
"|--------------------|------------------------------------------|\n",
|
||
"|DDSDDE(NTENS,NTENS) | Jacobian matrix of the constitutive model|\n",
|
||
"|STRESS(NTENS) | the stress tensor (in vector format) |\n",
|
||
"|STATEV(NSTATV) | An array containing the solution-dependent state variables. |\n",
|
||
"|SSE | Specific elastic strain energy |\n",
|
||
"|SPD | plastic dissipation |\n",
|
||
"|SCD | “creep” dissipation |\n",
|
||
"|RPL | Volumetric heat generation per unit time |\n",
|
||
"|DDSDDT(NTENS) | Variation of the stress increments with respect to the temperature. |\n",
|
||
"|DRPLDE(NTENS) | Variation of RPL with respect to the strain increments.|\n",
|
||
"|DRPLDT | Variation of RPL with respect to the temperature. |\n",
|
||
"|RPL | RPL is used to indicate whether or not a cohesive element is open to the tangential flow of pore fluid.|\n",
|
||
"|PNEWDT | Ratio of suggested new time increment to the time increment being used |\n",
|
||
"|STRAN(NTENS) | An array containing the total strains at the beginning of the increment. |\n",
|
||
"|DSTRAN(NTENS) | Array of strain increments. |\n",
|
||
"|TIME(1) | Value of step time at the beginning of the current increment. |\n",
|
||
"|TIME(2) | Value of total time at the beginning of the current increment. |\n",
|
||
"|DTIME | Time increment.|\n",
|
||
"|TEMP | Temperature at the start of the increment. |\n",
|
||
"|DTEMP | Increment of temperature. |\n",
|
||
"|PREDEF | Array of interpolated values of predefined field variables at this point at the start of the increment, based on the values read in at the nodes.|\n",
|
||
"|DPRED | Array of increments of predefined field variables. |\n",
|
||
"|CMNAME | User-defined material name, left justified. |\n",
|
||
"|NDI | Number of direct stress components at this point. |\n",
|
||
"|NSHR | Number of engineering shear stress components at this point. |\n",
|
||
"|NTENS | Size of the stress or strain component array (NDI + NSHR). |\n",
|
||
"|NSTATV | Number of solution-dependent state variables that are associated with this material type |\n",
|
||
"|PROPS(NPROPS) | User-specified array of material constants associated with this user material. |\n",
|
||
"|NPROPS | User-defined number of material constants associated with this user material. |\n",
|
||
"|COORDS | An array containing the coordinates of this point. |\n",
|
||
"|DROT(3,3) | Rotation increment matrix. |\n",
|
||
"|CELENT | Characteristic element length |\n",
|
||
"|DFGRD0(3,3) | Array containing the deformation gradient at the beginning of the increment. |\n",
|
||
"|DFGRD1(3,3) | Array containing the deformation gradient at the end of the increment. |\n",
|
||
"|NOEL | Element number. |\n",
|
||
"|NPT | Integration point number. |\n",
|
||
"|LAYER | Layer number (for composite shells and layered solids). |\n",
|
||
"|KSPT | Section point number within the current layer. |\n",
|
||
"|KSTEP | Step number. |\n",
|
||
"|KINC | Increment number. |"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0-element Array{Any,1}"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"STRESS = [0. 0. 0. 0.]\n",
|
||
"p = 0. # EFFECTIVE PLASTIC STRAIN\n",
|
||
"r = 0. # ISOTROPIC HARDENING VARIABLE\n",
|
||
"STATEV = [p r]\n",
|
||
"NTENS = 4 \n",
|
||
"DDSDDE = zeros(NTENS,NTENS)\n",
|
||
"SSE = {} # Not used in this example\n",
|
||
"SPD = {} # Not used in this example\n",
|
||
"SCD = {} # Not used in this example\n",
|
||
"RPL = {} # Not used in this example\n",
|
||
"DDSDDT = {} # Not used in this example\n",
|
||
"DRPLDE = {} # Not used in this example\n",
|
||
"DRPLDT = {} # Not used in this example\n",
|
||
"STRAN = [0. 0. 0. 0.]\n",
|
||
"DSTRAN = [0. 0. 0. 0.]\n",
|
||
"TIME = [0. 0.1] # CHECK TIME(2)\n",
|
||
"DTIME = {} # Not used in this example\n",
|
||
"TEMP = {} # Not used in this example\n",
|
||
"DTEMP = {} # Not used in this example\n",
|
||
"PREDEF = {} # Not used in this example\n",
|
||
"DPRED = {} # Not used in this example\n",
|
||
"CMNAME = {} # Not used in this example CHARACTER*80 CMNAME\n",
|
||
"NDI = {} # Not used in this example\n",
|
||
"NSHR = {} # Not used in this example\n",
|
||
"#NTENS correct place\n",
|
||
"NSTATV = length(STATEV)\n",
|
||
"PROPS = {} # Not used in this example\n",
|
||
"NPROPS = {} # Not used in this example\n",
|
||
"COORDS = {} # Not used in this example\n",
|
||
"DROT = {} # Not used in this example\n",
|
||
"PNEWDT = {} # Not used in this example EXPLANATION MISSING\n",
|
||
"CELENT = {} # Not used in this example\n",
|
||
"DFGRD0 = {} # Not used in this example\n",
|
||
"DFGRD1 = {} # Not used in this example\n",
|
||
"NOEL = {} # Not used in this example\n",
|
||
"NPT = {} # Not used in this example\n",
|
||
"LAYER = {} # Not used in this example\n",
|
||
"KSPT = {} # Not used in this example\n",
|
||
"KSTEP = {} # Not used in this example\n",
|
||
"KINC = {} # Not used in this example"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Finally the ccall of the umat"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ccall((:umat_, \"./libumat\"), Int64, \n",
|
||
" (Ptr{Float64},Ptr{Float64},Ptr{Float64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Float64},Ptr{Float64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Int64},Ptr{Int64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void}),\n",
|
||
" STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,DRPLDE,DRPLDT,\n",
|
||
" STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,NDI,NSHR,\n",
|
||
" &NTENS,&NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,CELENT,DFGRD0,DFGRD1,\n",
|
||
" NOEL,NPT,LAYER,KSPT,KSTEP,KINC)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Something happened"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"4x4 Array{Float64,2}:\n",
|
||
" 282692.0 121154.0 121154.0 0.0\n",
|
||
" 121154.0 282692.0 121154.0 0.0\n",
|
||
" 121154.0 121154.0 282692.0 0.0\n",
|
||
" 0.0 0.0 0.0 80769.2"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"DDSDDE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"1x2 Array{Float64,2}:\n",
|
||
" 0.0 0.0"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"STATEV"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Let's wrap this to simplified Julia function for testing"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"isotropichardening! (generic function with 2 methods)"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"function isotropichardening!(stress,p,r,jacobian,strain,DSTRAN)\n",
|
||
" local STRESS = stress\n",
|
||
" local STATEV = [p r]\n",
|
||
" local DDSDDE = jacobian\n",
|
||
" local STRAN = strain\n",
|
||
" o = ccall((:umat_, \"./libumat\"), Int64, \n",
|
||
" (Ptr{Float64},Ptr{Float64},Ptr{Float64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Float64},Ptr{Float64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Void},Ptr{Int64},Ptr{Int64},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},\n",
|
||
" Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void},Ptr{Void}),\n",
|
||
" STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,DRPLDE,DRPLDT,\n",
|
||
" STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,NDI,\n",
|
||
" NSHR,&NTENS,&NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,CELENT,DFGRD0,DFGRD1,\n",
|
||
" NOEL,NPT,LAYER,KSPT,KSTEP,KINC)\n",
|
||
" stress = STRESS\n",
|
||
" p = STATEV[1]\n",
|
||
" r = STATEV[2]\n",
|
||
" jacobian = DDSDDE\n",
|
||
" strain = STRAN + DSTRAN\n",
|
||
" if o != 0 \n",
|
||
" throw(\"UMAT failed. Return code is $o\")\n",
|
||
" end\n",
|
||
" return o\n",
|
||
"end"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Now somebody should know how to use this function (help needed)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0[0.0 0.0 0.0 0.0]0.00.0[0.0 0.0 0.0 0.0]\n",
|
||
"0[28.269231713558856 12.11538570784259 12.11538570784259 0.0]0.00.0[0.0001 0.0 0.0 0.0]\n",
|
||
"0[84.80769514067657 36.34615712352777 36.34615712352777 0.0]0.00.0[0.0002 0.0 0.0 0.0]\n",
|
||
"0[169.61539028135314 72.69231424705553 72.69231424705553 0.0]0.00.0[0.00030000000000000003 0.0 0.0 0.0]\n",
|
||
"0[282.69231713558855 121.15385707842589 121.15385707842589 0.0]0.00.0[0.0004 0.0 0.0 0.0]\n"
|
||
]
|
||
},
|
||
{
|
||
"ename": "LoadError",
|
||
"evalue": "\"UMAT failed. Return code is 62421072\"\nwhile loading In[30], in expression starting on line 5",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\"UMAT failed. Return code is 62421072\"\nwhile loading In[30], in expression starting on line 5",
|
||
"",
|
||
" in isotropichardening! at In[29]:21",
|
||
" in anonymous at no file:7"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"p = 0.0\n",
|
||
"r = 0.0\n",
|
||
"S = [0. 0. 0. 0.]\n",
|
||
"strain = [0. 0. 0. 0.]\n",
|
||
"for i in range(0,0.0001,11)\n",
|
||
" DSTRAN = [i 0. 0. 0.]\n",
|
||
" out = isotropichardening!(S,p,r,DDSDDE,strain,DSTRAN)\n",
|
||
" println(out,S,p,r, DSTRAN)\n",
|
||
" #println(i)\n",
|
||
"end"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Let's find out how many different funtions & subroutines are called"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"fil = open(\"code_imp.f\")\n",
|
||
"sub_list = Set{ASCIIString}()\n",
|
||
"for line in readlines(fil)\n",
|
||
" # Fortran comment = something non whitespce at the firts character\n",
|
||
" if ismatch(r\"^[^\\s]\",line)\n",
|
||
" #println(line)\n",
|
||
" continue\n",
|
||
" end\n",
|
||
" if ismatch(r\"call\",lowercase(line))\n",
|
||
" call = split(lowercase(line))[2] #divede by white space\n",
|
||
" sub = split(call,\"(\")[1] #divide by \"(\"\n",
|
||
" #println(sub)\n",
|
||
" push!(sub_list,sub)\n",
|
||
" end\n",
|
||
"end\n",
|
||
"close(fil)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Set{ASCIIString}({\"keffp\",\"kdevia\",\"kmlt1\"})"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"sub_list"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Next let's find out how many functions and subroutines are defined"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"fil = open(\"code_imp.f\")\n",
|
||
"fun_list = Set{ASCIIString}()\n",
|
||
"for line in readlines(fil)\n",
|
||
" if ismatch(r\"^[^\\s]\",line)\n",
|
||
" #println(line)\n",
|
||
" continue\n",
|
||
" end\n",
|
||
" comp = lowercase(line)\n",
|
||
" if ismatch(r\"subroutine\",comp) || ismatch(r\"funtion\",comp) || ismatch(r\"external\",comp)\n",
|
||
" #println(line)\n",
|
||
" call = split(lowercase(line),\"(\")[1] #divede by white space\n",
|
||
" sub = split(call)[end] #divide by \"(\"\n",
|
||
" #if length(sub) > 1\n",
|
||
" # sub = sub[2]\n",
|
||
" #end\n",
|
||
" #println(sub)\n",
|
||
" push!(fun_list,sub)\n",
|
||
" end\n",
|
||
"end\n",
|
||
"close(fil)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Set{ASCIIString}({\"keffp\",\"dyadicprod\",\"umat\",\"kdevia\",\"dotprod\",\"kmlt1\"})"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fun_list"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## And Finally are all called subroutines defined"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Set{ASCIIString}({})"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"setdiff(sub_list,fun_list)"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Julia 0.3.8",
|
||
"language": "julia",
|
||
"name": "julia-0.3"
|
||
},
|
||
"language_info": {
|
||
"name": "julia",
|
||
"version": "0.3.10"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 0
|
||
}
|