


{"id":394826,"date":"2024-11-21T15:59:52","date_gmt":"2024-11-21T15:59:52","guid":{"rendered":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/ansys-apdl-displacement-constraints-d-commands-in-cbdo-file\/"},"modified":"2024-11-21T15:59:52","modified_gmt":"2024-11-21T15:59:52","slug":"ansys-apdl-displacement-constraints-d-commands-in-cbdo-file","status":"publish","type":"topic","link":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/ansys-apdl-displacement-constraints-d-commands-in-cbdo-file\/","title":{"rendered":"ANSYS APDL &#8211; displacement constraints (D commands) in .CBDO file"},"content":{"rendered":"<p>&lt;p&gt;Hello,&lt;\/p&gt;&lt;p&gt;I created a small example to find out how I can use the shell-solid submodelling feature in apdl. Unfortunately I did not manage to write the d constraints in the .cbdo file.&nbsp;&lt;\/p&gt;&lt;p&gt;I followed this related topic: https:\/\/innovationspace.ansys.com\/knowledge\/forums\/topic\/how-are-the-displacement-constraints-d-commands-in-cbdo-file-related-to-prnsol-displacements-at-the-cutboundary-nodes-if-the-nodes-are-coincident-at-cutboundary-in-the-coarse-and-the-submodel-i\/&lt;\/p&gt;&lt;p&gt;But I don&#8217;t know how I have to update my code to generate the constraints, does someone has an idea for me?&lt;\/p&gt;&lt;p&gt;Best greetings,&lt;\/p&gt;&lt;p&gt;Nils&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;import os&lt;\/p&gt;&lt;p&gt;import numpy as np&lt;\/p&gt;&lt;p&gt;import pandas as pd&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;from ansys.mapdl import core as pymapdl&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Start MAPDL as a service&lt;\/p&gt;&lt;p&gt;mapdl = pymapdl.launch_mapdl()&lt;\/p&gt;&lt;p&gt;# print(mapdl)&lt;\/p&gt;&lt;p&gt;### Basic settings&lt;\/p&gt;&lt;p&gt;# Creates a jobname for the coarse model&lt;\/p&gt;&lt;p&gt;mapdl.filname(fname = &#8216;Shell_global&#8217;)&lt;\/p&gt;&lt;p&gt;# Enter the preprocessor&lt;\/p&gt;&lt;p&gt;mapdl.prep7()&lt;\/p&gt;&lt;p&gt;# Create a title for the coarse model&lt;\/p&gt;&lt;p&gt;mapdl.title(title = &#8216;Shell_global&#8217;)&lt;\/p&gt;&lt;p&gt;# Set analysis type to static&lt;\/p&gt;&lt;p&gt;mapdl.antype(antype = &#8216;static&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;### Define variables and materials&lt;\/p&gt;&lt;p&gt;# Define material&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;mapdl.mp(lab = &#8216;ex&#8217;, mat = 1, c0 = 30E6)&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;mapdl.mp(lab = &#8216;NUXY&#8217;, mat = 1, c0 = 0.3)&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;# Define Geometric parameters&lt;\/p&gt;&lt;p&gt;l_plane = 3&lt;\/p&gt;&lt;p&gt;l_detail = 1&lt;\/p&gt;&lt;p&gt;h_detail = 1 # total height&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;### Setup model&lt;\/p&gt;&lt;p&gt;# Define Keypoints&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 1, x = 0, y = 0)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 2, x = l_plane, y = 0)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 3, x = l_plane, y = l_plane)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 4, x = 0, y = l_plane)&lt;\/p&gt;&lt;p&gt;# Define lines&lt;\/p&gt;&lt;p&gt;mapdl.l(p1 = 1, p2 = 2)&lt;\/p&gt;&lt;p&gt;mapdl.l(p1 = 2, p2 = 3)&lt;\/p&gt;&lt;p&gt;mapdl.l(p1 = 3, p2 = 4)&lt;\/p&gt;&lt;p&gt;mapdl.l(p1 = 4, p2 = 1)&lt;\/p&gt;&lt;p&gt;# Define area&lt;\/p&gt;&lt;p&gt;mapdl.al(1,2,3,4)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.lesize(nl1 = &#8216;all&#8217;, ndiv = 3)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.sectype(secid = 1, type_ = &#8216;SHELL&#8217;)&lt;\/p&gt;&lt;p&gt;mapdl.secdata(h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.et(1, &#8220;SHELL181&#8221;, 2)&lt;\/p&gt;&lt;p&gt;# Set to quads elements (key = 0)&lt;\/p&gt;&lt;p&gt;mapdl.mshape(key = 0, dimension = &#8216;2D&#8217;)&lt;\/p&gt;&lt;p&gt;# Specifies whether free meshing or mapped meshing should be used to mesh &#8211; mapped meshing (key = 1)&lt;\/p&gt;&lt;p&gt;mapdl.mshkey(key = 1)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.amesh(&#8216;all&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;### Create BC and forces\/displacements&lt;\/p&gt;&lt;p&gt;# Create fixed conditions&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;s&#8221;, &#8220;loc&#8221;, &#8220;x&#8221;, 0, 0)&lt;\/p&gt;&lt;p&gt;mapdl.d(node=&#8221;all&#8221;, lab=&#8221;ux&#8221;, value=0.0)&lt;\/p&gt;&lt;p&gt;mapdl.d(node=&#8221;all&#8221;, lab=&#8221;uy&#8221;, value=0.0)&lt;\/p&gt;&lt;p&gt;mapdl.d(node=&#8221;all&#8221;, lab=&#8221;uz&#8221;, value=0.0)&lt;\/p&gt;&lt;p&gt;#Apply displacements (1\/20 of the Lenght of the cube)&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;s&#8221;, &#8220;loc&#8221;, &#8220;x&#8221;, l_plane, l_plane)&lt;\/p&gt;&lt;p&gt;mapdl.d(node=&#8221;all&#8221;, lab=&#8221;ux&#8221;, value = l_plane * 1\/20)&lt;\/p&gt;&lt;p&gt;mapdl.allsel()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;### Run model&lt;\/p&gt;&lt;p&gt;mapdl.finish()&lt;\/p&gt;&lt;p&gt;mapdl.run(&#8220;\/SOLU&#8221;)&lt;\/p&gt;&lt;p&gt;mapdl.outres(&#8220;all&#8221;, &#8220;all&#8221;)&nbsp; # Save all result items for all nodes&lt;\/p&gt;&lt;p&gt;mapdl.solve()&lt;\/p&gt;&lt;p&gt;mapdl.finish()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Save .db file &#8211;&gt; name is as model fname: Cube_global_coarse.db&lt;\/p&gt;&lt;p&gt;mapdl.save()&lt;\/p&gt;&lt;p&gt;# Go in postprocessing &#8211;&gt; should create the .rst file&lt;\/p&gt;&lt;p&gt;mapdl.post1()&lt;\/p&gt;&lt;p&gt;mapdl.set(1, &#8216;LAST&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;test = mapdl.prnsol(&#8216;U&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;print(test)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.clear(&#8220;NOSTART&#8221;)&nbsp; # CLEAR THE DATABASE&lt;\/p&gt;&lt;p&gt;mapdl.filname(&#8220;Solid_submodel&#8221;)&nbsp; # DEFINE JOBNAME FOR THE SUBMODEL&lt;\/p&gt;&lt;p&gt;mapdl.prep7()&lt;\/p&gt;&lt;p&gt;# Create a title for the coarse model&lt;\/p&gt;&lt;p&gt;mapdl.title(title = &#8216;Solid_submodel&#8217;)&lt;\/p&gt;&lt;p&gt;mapdl.antype(antype = &#8216;static&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Define material&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;mapdl.mp(lab = &#8216;ex&#8217;, mat = 1, c0 = 30E6)&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;mapdl.mp(lab = &#8216;NUXY&#8217;, mat = 1, c0 = 0.3)&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;&lt;span lang=&#8221;DE&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p&gt;### Setup sub-model&lt;\/p&gt;&lt;p&gt;# Define Keypoints&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 10, x = l_detail, y = l_detail, z = 0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 11, x = 2*l_detail, y = l_detail, z = 0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 12, x = 2*l_detail, y = 2*l_detail, z = 0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 13, x = l_detail, y = 2*l_detail, z = 0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 14, x = l_detail, y = l_detail, z = -0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 15, x = 2*l_detail, y = l_detail, z = -0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 16, x = 2*l_detail, y = 2*l_detail, z = -0.5*h_detail)&lt;\/p&gt;&lt;p&gt;mapdl.k(npt = 17, x = l_detail, y = 2*l_detail, z = -0.5*h_detail)&lt;\/p&gt;&lt;p&gt;# Define volume&lt;\/p&gt;&lt;p&gt;mapdl.v(10,11,12,13,14,15,16,17)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Define element type&lt;\/p&gt;&lt;p&gt;mapdl.et(itype = 1, ename = &#8216;SOLID185&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Define Mesh size&lt;\/p&gt;&lt;p&gt;mapdl.esize(size = 0.25*h_detail)&lt;\/p&gt;&lt;p&gt;# performing the meshing&lt;\/p&gt;&lt;p&gt;mapdl.vmesh(&#8216;all&#8217;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Select node at cut boundary&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;s&#8221;, &#8220;loc&#8221;, &#8220;x&#8221;, l_detail, l_detail)&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;a&#8221;, &#8220;loc&#8221;, &#8220;x&#8221;, 2*l_detail, 2*l_detail)&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;a&#8221;, &#8220;loc&#8221;, &#8220;y&#8221;, l_detail, l_detail)&lt;\/p&gt;&lt;p&gt;mapdl.nsel(&#8220;a&#8221;, &#8220;loc&#8221;, &#8220;y&#8221;, 2*l_detail, 2*l_detail)&lt;\/p&gt;&lt;p&gt;# WRITE GEOMETRY TO Solid_submodel.node&lt;\/p&gt;&lt;p&gt;mapdl.nwrite(fname=&#8221;Solid_submodel&#8221;, ext=&#8221;node&#8221;)&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.allsel()&lt;\/p&gt;&lt;p&gt;mapdl.finish()&lt;\/p&gt;&lt;p&gt;# SAVE SUBMODEL DATA IN FILE Solid_submodel.db&lt;\/p&gt;&lt;p&gt;mapdl.save()&lt;\/p&gt;&lt;p&gt;mapdl.post1()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Starts complete coarse model again&lt;\/p&gt;&lt;p&gt;mapdl.resume(&#8220;Shell_global&#8221;, &#8220;db&#8221;)&lt;\/p&gt;&lt;p&gt;# Load result files from coarse model&lt;\/p&gt;&lt;p&gt;mapdl.file(&#8220;Shell_global&#8221;, &#8220;rst&#8221;)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;mapdl.cbdof(fname1 = &#8216;Solid_submodel&#8217;, ext1 = &#8216;node&#8217;, fname2 = &#8216;Solid_submodel&#8217;, ext2 = &#8216;cbdo&#8217;, kpos = 0, kshs = 1)&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;### From this point on the submodel is investigated&lt;\/p&gt;&lt;p&gt;mapdl.prep7()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# RESUME SUBMODEL FROM FILE Cube_submodel.db&lt;\/p&gt;&lt;p&gt;mapdl.resume(&#8220;Solid_submodel&#8221;, &#8220;db&#8221;)&lt;\/p&gt;&lt;p&gt;# READ IN INTERPOLATED B.C.&#8217;S FROM Cube_submodel.cbdo&lt;\/p&gt;&lt;p&gt;# :label &mdash; Begins reading from the first line beginning with the matching user-defined label :label&lt;\/p&gt;&lt;p&gt;mapdl.input(fname = &#8220;Solid_submodel&#8221;, ext = &#8220;cbdo&#8221;)&lt;\/p&gt;&lt;p&gt;mapdl.input(fname = &#8220;Solid_submodel&#8221;, ext = &#8220;cbdo&#8221;, Line = &#8220;:cb1&#8221;)&lt;\/p&gt;&lt;p&gt;mapdl.allsel()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Enter the solution process&lt;\/p&gt;&lt;p&gt;mapdl.slashsolu()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Solve fine model&lt;\/p&gt;&lt;p&gt;mapdl.solve()&lt;\/p&gt;&lt;p&gt;mapdl.finish()&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;# Postprocessing&lt;\/p&gt;&lt;p&gt;mapdl.post1()&lt;\/p&gt;&lt;p&gt;mapdl.set(1, 1)&lt;\/p&gt;<\/p>\n","protected":false},"template":"","class_list":["post-394826","topic","type-topic","status-publish","hentry","topic-tag-ansys-apdl","topic-tag-ansys-mapdl-1","topic-tag-submodeling"],"aioseo_notices":[],"acf":[],"custom_fields":[{"0":{"_bbp_subscription":["484073","431745"],"_bbp_author_ip":["134.28.146.213"],"_btv_view_count":["209"],"_bbp_topic_status":["unanswered"],"_bbp_topic_id":["394826"],"_bbp_forum_id":["27791"],"_bbp_engagement":["431745","484073"],"_bbp_voice_count":["2"],"_bbp_reply_count":["4"],"_bbp_last_reply_id":["395001"],"_bbp_last_active_id":["395001"],"_bbp_last_active_time":["2024-11-22 16:02:16"]},"test":"nils-erik-sanhenedu-unige-it"}],"_links":{"self":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/394826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics"}],"about":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/394826\/revisions"}],"wp:attachment":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/media?parent=394826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}