Opensees Community
1.11K subscribers
500 photos
158 videos
62 files
166 links
The Largest OpenSees Community of Iran (LOCI). Channel is managed by Dr. Afshin Alborzi.

https://www.instagram.com/ledocteurafshina

YouTube: LOCI Community

Contact with administrator👇

@OpenSeesCommunity_pm
Download Telegram
بلوک های زبان برنامه نویسی #C مختص مختصات نودها و تعریف قیود، جهت مقایسه با اینترپرتر زبان TCL (سه پست قبل):🌷

//# Units: kip, in, sec
//# ----------------------------
//# Start of model generation
//# ----------------------------
//# Create ModelBuilder with 3 dimensions and 6 DOF/node
//model BasicBuilder -ndm 3 - ndf 6
var theModel = new OpenSees.AnalysisModelWrapper();
var theDomain = new OpenSees.Components.DomainWrapper();
//# Define geometry
//# Set parameters for model geometry
// set h 144.0; # Story height
//set by 240.0; # Bay width in Y-direction
//set bx 240.0; # Bay width in X-direction
var h = 144.0; //Story height
var by = 240.0; //Bay width in Y-direction
var bx = 240.0; //Bay width in X-direction
//# Create nodes
//# tag X Y Z
// node 1[expr -$bx / 2][expr $by / 2] 0
//node 2[expr $bx / 2][expr $by / 2] 0
//node 3[expr $bx / 2][expr -$by / 2] 0
//node 4[expr -$bx / 2][expr -$by / 2] 0
//node 5[expr -$bx / 2][expr $by / 2] $h
//node 6[expr $bx / 2][expr $by / 2] $h
//node 7[expr $bx / 2][expr -$by / 2] $h
//node 8[expr -$bx / 2][expr -$by / 2] $h
//node 10[expr -$bx / 2][expr $by / 2][expr 2 *$h]
//node 11[expr $bx / 2][expr $by / 2][expr 2 *$h]
//node 12[expr $bx / 2][expr -$by / 2][expr 2 *$h]
//node 13[expr -$bx / 2][expr -$by / 2][expr 2 *$h]
//node 15[expr -$bx / 2][expr $by / 2][expr 3 *$h]
//node 16[expr $bx / 2][expr $by / 2][expr 3 *$h]
//node 17[expr $bx / 2][expr -$by / 2][expr 3 *$h]
//node 18[expr -$bx / 2][expr -$by / 2][expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(1, 6, -bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(2, 6, bx / 2, by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(3, 6, bx / 2, -by / 2, 0));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(4, 6, -bx / 2, -by / 2, 0));

theDomain.AddNode(new OpenSees.Components.NodeWrapper(5, 6, -bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(6, 6, bx / 2, by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(7, 6, bx / 2, -by / 2, h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(8, 6, -bx / 2, -by / 2, h));

theDomain.AddNode(new OpenSees.Components.NodeWrapper(10, 6, -bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(11, 6, bx / 2, by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(12, 6, bx / 2, -by / 2, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(13, 6, -bx / 2, -by / 2, 2 * h));

theDomain.AddNode(new OpenSees.Components.NodeWrapper(15, 6, -bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(16, 6, bx / 2, by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(17, 6, bx / 2, -by / 2, 3 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(18, 6, -bx / 2, -by / 2, 3 * h));
//# Master nodes for rigid diaphragm
//# tag X Y Z
//node 9 0 0 $h
//node 14 0 0[expr 2 *$h]
//node 19 0 0[expr 3 *$h]
theDomain.AddNode(new OpenSees.Components.NodeWrapper(9, 6, 0, 0, 1 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(14, 6, 0, 0, 2 * h));
theDomain.AddNode(new OpenSees.Components.NodeWrapper(19, 6, 0, 0, 3 * h));
//# Set base constraints
//# tag DX DY DZ RX RY RZ
// fix 1 1 1 1 1 1 1
//fix 2 1 1 1 1 1 1
//fix 3 1 1 1 1 1 1
//fix 4 1 1 1 1 1 1
foreach (var nodeId in new int[] { 1, 2, 3, 4 })
{
for (var i = 0; i < 6; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
//# Define rigid diaphragm multi-point constraints
//# normalDir master slaves
//rigidDiaphragm 3 9 5 6 7 8
//rigidDiaphragm 3 14 10 11 12 13
//rigidDiaphragm 3 19 15 16 17 18
theDomain.CreateRigidDiaphragm(9, new IDWrapper(new int[] { 5, 6, 7, 8 }), 2);
theDomain.CreateRigidDiaphragm(14, new IDWrapper(new int[] { 10, 11, 12, 13 }), 2);
theDomain.CreateRigidDiaphragm(19, new IDWrapper(new int[] { 15, 16, 17, 18 }), 2);

//# Constraints for rigid diaphragm master nodes
//# tag DX DY DZ RX RY RZ
//fix 9 0 0 1 1 1 0
//fix 14 0 0 1 1 1 0
//fix 19 0 0 1 1 1 0
foreach (var nodeId in new int[] { 9, 14, 19 })
{
for (var i = 2; i < 5; i++)
{
theDomain.AddSP_Constraint(new OpenSees.Components.Constraints.SP_ConstraintWrapper(nodeId, i, 0.0, true));
}
}
This media is not supported in your browser
VIEW IN TELEGRAM
لحظه بازكردن فواره هاي پارك پترهوف در سنت پترزبورگ، خليج فنلاند، ۲۳ مرداد ۱۳۹۸ رأس ساعت ١١
بلوک زبان برنامه نویسی TCL مختص تعریف رفتار مصالح، جهت مقایسه تخصصی با اینترپرتر زبان #C (پست بعدی):🌷

# Define materials for nonlinear columns
# --------------------------------------
# CONCRETE
# Core concrete (confined)
# tag f'c epsc0 f'cu epscu
uniaxialMaterial Concrete01 1 -5.0 -0.005 -3.5 -0.02

# Cover concrete (unconfined)
set fc 4.0
uniaxialMaterial Concrete01 2 -$fc -0.002 0.0 -0.006

# STEEL
# Reinforcing steel
# tag fy E b
uniaxialMaterial Steel01 3 60 30000 0.02

# Column width
set h 18.0

# Source in a procedure for generating an RC fiber section
source RCsection.tcl

# Column torsional stiffness
set GJ 1.0e10;

# Call the procedure to generate the column section
# id h b cover core cover steel nBars barArea nfCoreY nfCoreZ nfCoverY nfCoverZ GJ
RCsection 1 $h $h 2.5 1 2 3 3 0.79 8 8 10 10 $GJ

# Concrete elastic stiffness
set E [expr 57000.0*sqrt($fc*1000)/1000];

# Linear elastic torsion for the column
# uniaxialMaterial Elastic 10 $GJ

# Attach torsion to the RC column section
# tag uniTag uniCode secTag
# section Aggregator 2 10 T -section 1
پاسخ به سوالات علمی دانشجویان خوب🌷❤️مختص تعطیلات آخر هفته
پاسخ به سوالات علمی دانشجویان خوب🌷❤️مختص تعطیلات آخر هفته
پاسخ به سوالات علمی دانشجویان خوب🌷❤️مختص تعطیلات آخر هفته
شکل ۱ مربوط به سوال مطرح شده در پست قبلی
شکل ۲ مربوط به سوال مطرح شده در پست قبلی
بلوک زبان برنامه نویسی #C مختص رفتار مصالح و تعریف مقاطع، جهت مقایسه با اینترپرتر زبان TCL (شش پست قبل):🌷

//# Define materials for nonlinear columns
//# --------------------------------------
//# CONCRETE
//# Core concrete (confined)
//# tag f'c epsc0 f'cu epscu
//uniaxialMaterial Concrete01 1 - 5.0 - 0.005 - 3.5 - 0.02
var mat1 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(1, -5.0, -0.005, -3.5, -0.02);

//# Cover concrete (unconfined)
var fc = 4.0;
var mat2 = new OpenSees.Materials.Uniaxials.Concrete01Wrapper(2, -fc, -0.002, 0, -0.006);

//# STEEL
//# Reinforcing steel
//# tag fy E b
//uniaxialMaterial Steel01 3 60 30000 0.02
var mat3 = new OpenSees.Materials.Uniaxials.Steel01Wrapper(3, 60, 30000, 0.02);

var colh = 18.0;
var colb = 18.0;

//# Concrete elastic stiffness
//set E[expr 57000.0 * sqrt($fc * 1000) / 1000];
var Ec = 57000.0 * Math.Sqrt(fc * 1000) / 1000;
var GJ = 1.0e10;

var GJMat = new OpenSees.Materials.Uniaxials.ElasticMaterialWrapper(10, GJ, 0);

OpenSees.Materials.Sections.SectionForceDeformationWrapper colSection = null;
if (!elastic)
{
colSection = CreateRCSection(1, colh, colb, 2.5,
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(1, mat1),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(2, mat2),
new KeyValuePair<int, Materials.Uniaxials.UniaxialMaterialWrapper>(3, mat3),
3, 0.79, 8, 8, 10, 10, GJMat);
}
else

{
colSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(4, Ec, colb * colh, 1 / 12.0 * colb * Math.Pow(colh, 3), 1 / 12.0 * colh * Math.Pow(colb, 3), GJ, 1);
}
بلوک های زبان برنامه نویسی TCL مختص تعریف مقاطع و المان های غیرخطی، جهت مقایسه با اینترپرتر زبان #C (پست بعدی):🌷

set colSec 1

# Define column elements

#set PDelta "ON"
set PDelta "OFF"

# Geometric transformation for columns
if {$PDelta == "ON"} {
# tag vecxz
geomTransf LinearWithPDelta 1 1 0 0
} else {
geomTransf Linear 1 1 0 0
}
# Number of column integration points (sections)

set np 4

# Create the nonlinear column elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 1 1 5 $np $colSec 1
element nonlinearBeamColumn 2 2 6 $np $colSec 1
element nonlinearBeamColumn 3 3 7 $np $colSec 1
element nonlinearBeamColumn 4 4 8 $np $colSec 1

element nonlinearBeamColumn 5 5 10 $np $colSec 1
element nonlinearBeamColumn 6 6 11 $np $colSec 1
element nonlinearBeamColumn 7 7 12 $np $colSec 1
element nonlinearBeamColumn 8 8 13 $np $colSec 1

element nonlinearBeamColumn 9 10 15 $np $colSec 1
element nonlinearBeamColumn 10 11 16 $np $colSec 1
element nonlinearBeamColumn 11 12 17 $np $colSec 1
element nonlinearBeamColumn 12 13 18 $np $colSec 1

# Define beam elements

# Define material properties for elastic beams
# Using beam depth of 24 and width of 18
# --------------------------------------------
set Abeam [expr 18*24];
# "Cracked" second moments of area
set Ibeamzz [expr 0.5*1.0/12*18*pow(24,3)];
set Ibeamyy [expr 0.5*1.0/12*24*pow(18,3)];

# Define elastic section for beams
# tag E A Iz Iy G J
section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
set beamSec 3

# Geometric transformation for beams
# tag vecxz
geomTransf Linear 2 1 1 0

# Number of beam integration points (sections)
set np 3

# Create the beam elements
# tag ndI ndJ nPts secID transf
element nonlinearBeamColumn 13 5 6 $np $beamSec 2
element nonlinearBeamColumn 14 6 7 $np $beamSec 2
element nonlinearBeamColumn 15 7 8 $np $beamSec 2
element nonlinearBeamColumn 16 8 5 $np $beamSec 2

element nonlinearBeamColumn 17 10 11 $np $beamSec 2
element nonlinearBeamColumn 18 11 12 $np $beamSec 2
element nonlinearBeamColumn 19 12 13 $np $beamSec 2
element nonlinearBeamColumn 20 13 10 $np $beamSec 2

element nonlinearBeamColumn 21 15 16 $np $beamSec 2
element nonlinearBeamColumn 22 16 17 $np $beamSec 2
element nonlinearBeamColumn 23 17 18 $np $beamSec 2
element nonlinearBeamColumn 24 18 15 $np $beamSec 2
بلوک های زبان برنامه نویسی #C مختص تعریف المان های غیرخطی، جهت مقایسه با اینترپرتر زبان TCL (دو پست قبل):🌷

//#define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
//set ColTransfTag 1; # associate a tag to column transformation
//set BeamTransfTag 2; # associate a tag to beam transformation (good practice to keep col and beam separate)
//set ColTransfType Linear; # options, Linear PDelta Corotational
//geomTransf $ColTransfType $ColTransfTag; # only columns can have PDelta effects (gravity effects)
//geomTransf Linear $BeamTransfTag;
var pdelta = false;
Elements.CrdTransfs.CrdTransfWrapper colTransf = null;
if (!pdelta)
colTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
else
colTransf = new Elements.CrdTransfs.PDeltaCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 0, 0 }));
//# Number of column integration points (sections)
//set np 4
//# Create the nonlinear column elements
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 1 1 5 $np $colSec 1
//element nonlinearBeamColumn 2 2 6 $np $colSec 1
//element nonlinearBeamColumn 3 3 7 $np $colSec 1
//element nonlinearBeamColumn 4 4 8 $np $colSec 1

//element nonlinearBeamColumn 5 5 10 $np $colSec 1
//element nonlinearBeamColumn 6 6 11 $np $colSec 1
//element nonlinearBeamColumn 7 7 12 $np $colSec 1
//element nonlinearBeamColumn 8 8 13 $np $colSec 1

//element nonlinearBeamColumn 9 10 15 $np $colSec 1
//element nonlinearBeamColumn 10 11 16 $np $colSec 1
//element nonlinearBeamColumn 11 12 17 $np $colSec 1
//element nonlinearBeamColumn 12 13 18 $np $colSec 1

var np = 4;

var integrationRule = new Elements.BeamIntegrations.BeamIntegrationWrapper(Elements.BeamIntegrations.BeamIntegrationType.Lobatto);
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(1, 1, 5, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(2, 2, 6, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(3, 3, 7, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(4, 4, 8, np, colSection, integrationRule, colTransf));

theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(5, 5, 10, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(6, 6, 11, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(7, 7, 12, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(8, 8, 13, np, colSection, integrationRule, colTransf));

theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(9, 10, 15, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(10, 11, 16, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(11, 12, 17, np, colSection, integrationRule, colTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(12, 13, 18, np, colSection, integrationRule, colTransf));

//# Define beam elements
//# --------------------
var Abeam = 18 * 24;
var Ibeamzz = 0.5 * 1.0 / 12 * 18.0 * Math.Pow(24, 3);
var Ibeamyy = 0.5 * 1.0 / 12 * 24.0 * Math.Pow(18, 3);

//# Define elastic section for beams
//# tag E A Iz Iy G J
//section Elastic 3 $E $Abeam $Ibeamzz $Ibeamyy $GJ 1.0
var beamSection = new OpenSees.Materials.Sections.ElasticSection3dWrapper(3, Ec, Abeam, Ibeamzz, Ibeamyy, GJ, 1);

//# Geometric transformation for beams
//# tag vecxz
//geomTransf Linear 2 1 1 0
Elements.CrdTransfs.LinearCrdTransf3dWrapper beamTransf = new Elements.CrdTransfs.LinearCrdTransf3dWrapper(new VectorWrapper(new double[] { 1, 1, 0 }));

var beam_np = 5;
//# Create the beam elements
//# tag ndI ndJ nPts secID transf
//element nonlinearBeamColumn 13 5 6 $np $beamSec 2
//element nonlinearBeamColumn 14 6 7 $np $beamSec 2
//element nonlinearBeamColumn 15 7 8 $np $beamSec 2
//element nonlinearBeamColumn 16 8 5 $np $beamSec 2

//element nonlinearBeamColumn 17 10 11 $np $beamSec 2
//element nonlinearBeamColumn 18 11 12 $np $beamSec 2
//element nonlinearBeamColumn 19 12 13 $np $beamSec 2
//element nonlinearBeamColumn 20 13 10 $np $beamSec 2

//element nonlinearBeamColumn 21 15 16 $np $beamSec 2
//element nonlinearBeamColumn 22 16 17 $np $beamSec 2
//element nonlinearBeamColumn 23 17 18 $np $beamSec 2
//element nonlinearBeamColumn 24 18 15 $np $beamSec 2

theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(13, 5, 6, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(14, 6, 7, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(15, 7, 8, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(16, 8, 5, beam_np, beamSection, integrationRule, beamTransf));

theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(17, 10, 11, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(18, 11, 12, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(19, 12, 13, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(20, 13, 10, beam_np, beamSection, integrationRule, beamTransf));

theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(21, 15, 16, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(22, 16, 17, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(23, 17, 18, beam_np, beamSection, integrationRule, beamTransf));
theDomain.AddElement(new Elements.ForceBeamColumn3dWrapper(24, 18, 15, beam_np, beamSection, integrationRule, beamTransf));
umfpack2_x64.zip
704.5 KB
نکته بسیار مهم و کاربردی:

دانشجویان و پژوهشگران عزیزجهت انجام تحلیل های مدل های خیلی سنگین و پیچیده، می توانند از سیستم حل معادلات خارجی UmfPack2 استفاده نمایند. این اپلیکیشن با پسوند dll.، سرعت حل معادلات را ۷۰ برابر افزایش می دهد و نسخه ویندوز ۶۴ بیتی آن جهت دانلود در کانال قرار گرفت.

system umfpack2
عصر آدینه تون بخیر❤️معبد آرتمیس واقع در شهر افسس ترکیه، زیباترین بنای روی زمین و یکی از عجایب هفتگانه🌷
Opensees Community
umfpack2_x64.zip
نکته تکمیلی پیرامون نحوه استفاده از سیستم حل معادلات خارجی UmfPack2 (درخواستی ۷۲ نفر از عزیزان کانال):

فایل dll. بایستی در فولدر کدنویسی مربوطه باشد و UmfPack2 نیز از طریق کامند ذیل در کد اصلی سورس شود:

loadPackage umfpack2 ; # load the dll with the new commands
Media is too big
VIEW IN TELEGRAM
هشدار که عالم به مویی بند است!🌷

سفر با ترن زندگی فراز و نشیب‌های زیادی دارد،
انسان گاهی در میانه‌‌ی این راه، سخت دلش می‌گیرد و از رفتن باز می‌ماند!
گردنه‌ای که هیچ، انتظارش را نداشتیم!
شاید در این لحظات، باید یادمان نرود و به یاد آوریم که زندگی، نمی‌تواند همیشه همان مسیر مستقیم و روشن و بی پیچ و خم باشد!
شاید باید بدانیم که بدون این پیچ و خم‌ها؛ زندگی، اصلا زندگی نیست!
و شاید بهتر باشد تا به جای دلگیر شدن از این پیچ و خم‌های پر از مه، عبور از آن‌ها را بیاموزیم و بکوشیم تا راه خود را گم نکنیم!
فایل‌های DLL، کلوچه‌های خوشمزه‌ای برای برنامه نویسان حرفه‌ای!🌷

فرمت فایل DLL مربوط به کتابخانه‌هایی است که شامل توابع، کدها و داده‌هایی هستند که می‌توانند به صورت همزمان توسط چندین برنامه مورد استفاده قرار بگیرند. فایل DLL یک فرمت استاندارد برای ویندوز مایکروسافت بوده و مخفف عبارت Dynamic-Link Library است. فایل‌های lib و ocx و drv هم تقریبا مشابه DLL هستند. یک فایل DLL شامل توابع، کدها، منابع (تصویر، آیکون و ...) و داده‌هایی است که برای برنامه نویسان امکان لینک کردن و استفاده از توابع خیلی پیشرفته در کدنویسی هایشان را میسر می‌کند. یکی از خواص مهم فایل‌های کتابخانه‌ای DLL آن است که در یک زمان چندین برنامه می‌توانند از آن‌ها استفاده کنند درحالی که کدهایش در یک مکان ثابت قرار داشته و نیازی به گرفتن فضای بیشتر برای هر برنامه نیست. بگذارید برایتان مثالی بزنم: یک کتابخانه عمومی را فرض کنید که پر از کتاب‌های آشپزی و در هر یک از این کتاب‌های آشپزی یک دستور پخت خاصی برای قورمه سبزی نوشته شده است. افراد به کتابخانه سر زده و از آن کتاب‌ها استفاده می‌کنند و در نهایت چندین خورشت با طعم‌هایی متفاوت به دست خواهند آمد. فایل‌های DLL نیز این چنین هستند؛ یعنی پر از توابع مختلف با کاربردهای متفاوتی هستند که هر یک کار خاصی را انجام می‌دهند و تمامی برنامه‌ها می‌توانند از آن‌ها استفاده کنند. برنامه نویس در ابتدای برنامه تعریف می‌کند که با استفاده از تابع LoadLibrary خود ویندوز، کتابخانه مورد نظر را در برنامه بارگذاری کند. به همین دلیل است که اگر فایل dll مورد نظر وجود نداشته باشد، در همان ابتدا برنامه با خطا مواجه خواهد شد. وی با استفاده از تابع GetProcAddress ویندوز، فانکشن یا تابع مورد نظر خود را از فایل DLL بارگذاری کرده و یا با تابع LoadResource ویندوز، یک منبع (مثلا کدنویسی OpenSees) را از فایل DLL بارگذاری می‌کند. برنامه آن تابع را اجرا نموده یا از منابع فایل استفاده می‌کند. در نهایت با استفاده از تابع FreeLibrary ویندوز، پس از آن که کارش تمام شد، فایل DLL را Unload می‌کند.
توابع DLL تنها با استفاده از برنامه‌ها و فایل‌های EXE می‌توانند اجرا شوند و در آن‌ها می‌توان از توابع نام برده ویندوز (LoadLibrary و ...) استفاده کرد. بنابراین نمی‌توان به صورت مستقیم و بدون هیچ چیزی از توابع و منابع فایل DLL استفاده نمود. اما ویندوز برای این مشکل راه کاری را در نظر گرفته و آن ساخت یک برنامه برای اجرای این تابع‌ها است. اسم این برنامه در ویندوز

RUNDLL.EXE یا RUNDLL32.EXE

است. این برنامه از تابع گفته شده در ویندوز به عنوان یک ورودی استفاده کرده و تابع فایل DLL که قابلیت اجرا شدن بدون مشکل را داشته باشد، فراخوانی می‌کند. نحوه استفاده از این ابزار به این صورت است:

Rundll32.exe <DLLName>,<Function> <Optional Arguments>

این دستور را می‌توان در دیالوگ Run یا خط فرمان CMD نیز اجرا کرد. به نحوی که به جای <DLLName> آدرس کامل فایل DLL و یا اگر در پوشه سیستم بود، فقط نام آن نوشته شود. همچنین بایستی به جای <Function> تابع دلخواه و بجای <Optional Arguments> هم پارامترهای دلخواه برای تابع انتخاب شده را وارد نمود.
برای مثال، تابع OpenAs_RunDLL در کتابخانه shell32.dll باعث اجرا شدن دیالوگ Open With می‌شود. برای اجرای این دیالوگ در مسیر دلخواه فایل از دستور زیر استفاده می‌کنیم:

rundll32.exe shell32.dll,OpenAs_RunDLL C:\Users\Afshina\Desktop\afshina.html