Hi, thanks for the useful video. When we have geometry nonlinearity, we have to add this code or it can help convergency? I have a umat for an isotropic hyperelastic material which works very well under simple loading but it's hard to get converged for complex geometry and high deformation. It can be solved if I add this piece of code into my umat?
@learneasyonline21 күн бұрын
Please share the setting of your input file and your solver setting. Statev(2) = 0 alone cant delete elements.
@kianaghani20 күн бұрын
@@learneasyonline there are no special settings and everything is according to the video. Also, yes sdv2 can delete elements. It is pretty easy.
@pma72242 ай бұрын
Hey. I tried to implement it in a matlab code. I want to silmulate a uniaxial tensile Test. After the first plastic step i get a little stress in the 22 and 33 component of the stresstensor. this false components are then go into the new trial stress and over several loops add up to a very false result. what do you think i did wrong?
@kianaghani2 ай бұрын
@@pma7224 if your solution is converging, then you have allocation problem with your tensors.
@user-yj4ir9my9b2 ай бұрын
Thanks for your excellent tutorial, I need to assign material strength and modulus to different elements of three materials, if I go through with NOEL, the array will cross the boundary, how can I solve this problem, can you provide some suggestions
@kianaghani2 ай бұрын
@@user-yj4ir9my9b a more straightforward approach is to use the inp file. Built 3 elements with 3 different materials, and connect those elements in the inp file.
@user-yj4ir9my9b2 ай бұрын
@@kianaghani Thank you for your reply. I'm sorry, I looked at my description again, the problem I described may be too simplistic. My problem is that three materials, say each material has 10,000 elements, and the modulus and strength of each element is random. If i use inp files, i need to create 30,000 collections and assign attributes to them. So i now use UEXTERNALDB to read 3 dat files, each dat file contains 10000 modulus and strength information, what I need to do now is to assign the information of these three dat files to the element , but the NOEL of these three sets is also random, and using NOEL to assign attributes will cause the array to cross the boundary.
@kianaghani2 ай бұрын
@@user-yj4ir9my9b i can think of several solutions. The easiest is to use scripting instead of subroutine. If you insist on using subs, load the files and use a counter to measure the length of the array. Then, use a loop with the size of the counter, to assign materials and an if condition to see whether noel crosses the counter.
@kar-dt1hk2 ай бұрын
thank you for making this beautiful video
@mdrumi6293 ай бұрын
Sir, thank you for these exceptional videos on user subroutines in Abaqus. Would you please make a detailed video or a series of videos on writing and implementing VUEL for 2D and 3D uncoupled Cohesive Zone Models? It would be a great opportunity to learn from you about this topic. Please consider this request.
@jiajunsong33424 ай бұрын
thank you very much for sharing the wonderful vedio! i understand field(1) controls the elastic modulus, but why statev(2) = 0 means the element is deleted can you explain that, thanks again!
@kianaghani3 ай бұрын
statev(2) is controlling the element deletion process. 1 means active, whereas 0 means non-active.
@refquesog81044 ай бұрын
The option deepVar is grey in my Abaqus Learning Edition 2023. Is this a limitation?
@kianaghani4 ай бұрын
It seems so.
@mahdivafaei43945 ай бұрын
please help me what is this error
@mahdivafaei43945 ай бұрын
i get error found invalid intiger 0
@kianaghani5 ай бұрын
Take a look at the log or msg files.
@jumpshot-zz1uy5 ай бұрын
hi,sir. I changed the geometry in the first model by modelchange. After , in the second model, I import the part by the odb file. The geometry wasn't same as the first one shown in the result. Please tell me if it were nomal.
@kianaghani5 ай бұрын
Maybe you’re doing something wrong
@alicejohnson38025 ай бұрын
Thank you very much, it seems very useful, but I don't know how to use this method. What I mean is that I now have a VUMAT subroutine with over 2000 lines, and I want to change it to a UMAT subroutine. What should I do using your method?
@kianaghani5 ай бұрын
This is not about changing the subs. It’s about conversion between them.
@alicejohnson38025 ай бұрын
@@kianaghani I have a VUMAT subroutine and I want it to run under “Static,General” conditions. What should I do? Thank you very much.
@kianaghani5 ай бұрын
@@alicejohnson3802 just pass the stress vector from vumat to the umat. Also construct the ddsdde matrix in umat
@alicejohnson38024 ай бұрын
@@kianaghani Dear Aghani, I want to use the method you mentioned to solve the problem I want to solve, but I have tried for a month but still can't solve it. Could you please leave your email? Can I send you my VUMAT program and model? Is it convenient for you to help me solve this problem?
@compengaero44815 ай бұрын
How do you set up the number of cpus using command?
@kianaghani5 ай бұрын
At the end of the command line type, for example, "cpus=4", you can use gpus too, "gpus=5"
@compengaero44815 ай бұрын
Thanks for your quick reply. @@kianaghani
@compengaero44815 ай бұрын
@@kianaghanithanks for your quick reply
@user-ty3qw7gs7k6 ай бұрын
thanks for your sharing, sir. I'm using your script but I'm having trouble getting it to run., can you help find where errors are? subroutine vdload ( C Read only (unmodifiable)variables - 1 nblock, ndim, stepTime, totalTime, 2 amplitude, curCoords, velocity, dirCos, jltyp, sname, C Write only (modifiable) variable - 1 value ) C include 'vaba_param.inc' C dimension curCoords(nblock,ndim), velocity(nblock,ndim), 1 dirCos(nblock,ndim,ndim), value(nblock) character*80 sname C real*8 a,b real*8 LA,LB real*8 p !real*8 slabW,v a=0.35 b=0.2 LA=5 LB=2.5 p=1000 slabW=10 v=20 disp=v*stepTime do km = 1, nblock if(curCoords(km,1)<(slabW-LB)/2. .and. curCoords(km,1)>(slabW-LB)/2.-b) then if(curCoords(km,3)<disp+a .and. curCoords(km,3)>disp) then value(km)=p else if(curCoords(km,3)<disp+a+LA .and. curCoords(km,3)>disp+LA) then value(km)=p else value(km)=0.0 end if else if(curCoords(km,1)>(slabW+LB)/2. .and. curCoords(km,1)<(slabW+LB)/2.+b) then if(curCoords(km,3)<disp+a .and. curCoords(km,3)>disp) then value(km)=p else if(curCoords(km,3)<disp+a+LA .and. curCoords(km,3)>disp+LA) then value(km)=p else value(km)=0.0 end if else value(km)=0.0 end if end do return end
@kianaghani6 ай бұрын
Hi.Check your *.log file.
@user-ty3qw7gs7k5 ай бұрын
Hi, I found my problem because of the version, I'm using version 2022.@@kianaghani
@structurelearninghub33406 ай бұрын
@kianaghani I didn't see the concrete tension damage parameter in this plugin
@kianaghani6 ай бұрын
It uses fracture energy in tension.
@structurelearninghub33406 ай бұрын
@@kianaghani Please see point number 18 docs.software.vt.edu/abaqusv2022/English/SIMACAECAERefMap/simacae-t-prpmechanicalplasticconcretedamagedmodel.htm
@structurelearninghub33406 ай бұрын
@@kianaghani can you please see step 18 in this link docs.software.vt.edu/abaqusv2022/English/SIMACAECAERefMap/simacae-t-prpmechanicalplasticconcretedamagedmodel.htm
Thank you for the video!!! I wish you all good health and happiness, as well as peace, love and harmony!!!
@structurelearninghub33406 ай бұрын
Do it uses stress strain diagram from code or test data?
@kianaghani6 ай бұрын
It uses the Saenz stress-strain equation for concrete, which is pretty good for numerical simulations.
@structurelearninghub33406 ай бұрын
@@kianaghani thank you so much for your promt reply.
@structurelearninghub33406 ай бұрын
How do you determine tha fracture energy GFI value?@@kianaghani
@kianaghani6 ай бұрын
@@structurelearninghub3340 depends on the eq. you are using. I normally use fib-2010 code equations.
@structurelearninghub33406 ай бұрын
@@kianaghani Hello sir, Which relation do you use to define the behaviour of concrete in tension ?
@tcp-cd9tv6 ай бұрын
I replicated your model, but the element were not deleted where the FIELD(1) =0 and SDV2=0, what could be the reason? thanks.
@kianaghani6 ай бұрын
If you replicated the exact model, the results should be the same. Maybe, all of the integration points have not reached the critical value.
@RajKumar-vq5pm6 ай бұрын
Please explain why did you assign filed(1) = 0 Later field(1) = 1 and finally 3
@RajKumar-vq5pm6 ай бұрын
Suppose, if I wanted to do parameterization, the thickness will dimensions will change, in that case how can I get the corresponding dimensions dynamically in subroutine to compute E. please make a video
@olawaleayinde62157 ай бұрын
Hello bro. Please, how can I contact you. The vdload subroutine file is not compiling. Guess may be an error somewhere.
@kianaghani7 ай бұрын
Hi. The subroutine works fine. If you have compiling issues, there must be a problem with your ABAQUS not linked with the compiler.
@satellizer22677 ай бұрын
Is the plugin you have listed still valid for 2023 version? I can't seem to get it working on mine.
@kianaghani7 ай бұрын
I tried it on 2022 and it worked. I don’t know about 2023 though.
@derejegobena68767 ай бұрын
@kianaghani1709 How to contact you?
@derejegobena68767 ай бұрын
I want to contact you. Can you provide your email address?
@pedromattioli62027 ай бұрын
The OPEN statement is passing the 72 column limit. Why isn't this causing an error? I thought ABAQUS used fortran 77, with fixed format.
@pedromattioli62027 ай бұрын
Also, thanks for all the high quality videos on Abaqus. Your channel has been very insightful.
@kianaghani7 ай бұрын
@@pedromattioli6202 Thank you. I fixed the 72 column problem by using some coding in the compiler options. The fix can be found on the internet. Nonetheless, you are right about that.
@karimmosli7 ай бұрын
thank you sir for this video
@jumpshot-zz1uy8 ай бұрын
thanks for your sharing, sir. I write the subroutine script, I met a problem that I want introduce an initial stress field with a legendre polynomil. how can I do it. my script like this, can you help find where errors are? subroutine sigini(sigma,coords,ntens,ncrds,noel,npt,layer, $ kspt,lrebar,rebarn) C include 'aba_param.inc' C dimension sigma(ntens),coords(ncrds) character*80 rebarn C integer i double precision x,y, Pnx x=coords(1) y=coords(2) z=coords(3) Pnx=legendreP(3,y/38) C if (n.eq.3.and.abs(x).lt.60.0d0) then sigma(1)=Pnx end if return end C function legendreP(n,y) result(Pn) integer, intent(in) n double precision, intent(in) y double precision Pn if (n==0) then Pn=1.0d0 else if (n==1) then Pn=y else Pn=((2*n-1)*y*legendreP(n-1,y) $ -(n-1) * legendreP(n-2,y)/n end if end function legendreP
@kianaghani8 ай бұрын
I think the problem is related to “n”. Introduce “n” before the if condition instead of 3.
@jumpshot-zz1uy8 ай бұрын
Thanks Ill try.@@kianaghani
@karimmosli8 ай бұрын
thank you sir for this video
@MirgenMiro-dv2hf8 ай бұрын
Excellent work 👍❤
@ehsankk16368 ай бұрын
Great job. Thanks a lot.
@hayelelnaggar44409 ай бұрын
Can run the NEW model from the GUI?
@kianaghani8 ай бұрын
If you want to use the GUI, you should input the suitable keyword.
@altaflone33569 ай бұрын
Sir, i am using C3D8 elements with 8 nodes, 8 integration points, 5 degrees of freedom at each integration point, 18 variables at each integration point, 13 properties. i politely request if i am using the correct modifications below ************************************************************* *User element, nodes=8, type=U1, properties=13, coordinates=3, var=144 1,2,3 ************************************************* *ELEMENT, TYPE=U1, ELSET=SOLID ************************************************************* also, sir after 1,2.3 do i need to add anything more? politely request for help sir.
@kianaghani9 ай бұрын
it's correct
@hadihaghgouei6669 ай бұрын
Hi Kian, Thank you for your excellent tutorial. I have a question about assigning different Young's moduli to elements, where each element has a unique Young's modulus, in order to simulate a heterogeneous model. I am curious about how we can implement this solution when using VUMAT, considering that Abaqus calls elements block by block. Appreciate your guidance.
@kianaghani9 ай бұрын
Hello, Use VUSDFLD and SDVs. Nonetheless, it’s gonna be hard.
@altaflone33569 ай бұрын
Sir is there any MATLAB resource to modify any .inp File for UEL Compatibility. Politely request for help sir.
@kianaghani9 ай бұрын
Not that I know of. Usually, everyone has their own method. I do it by hand not coding.
@altaflone33569 ай бұрын
When i run the input and fortran scripts through terminal, i get the odb as shown in video. However i don't get any results. can you please tell what is wrong. i am using input file provided by you without modifying it.
@kianaghani9 ай бұрын
I think you are making a mistake in the process.
@kianaghani9 ай бұрын
@@altaflone3356 At the end of the inp file, there is a line "*element output, elset=decoy, SDV ". With this line the data will be shown.
@jumpshot-zz1uy9 ай бұрын
Hi,sir. I CANT RUN the command, it's warning that"Abaqus Error: The following file(s) could not be located: Job-1.mdl". May you have ever encountered such a problem, how to solve it?
@kianaghani9 ай бұрын
Hi. Both jobs should be in the same folder.
@jumpshot-zz1uy8 ай бұрын
@@kianaghani thanks very much!
@boopathy9899 ай бұрын
Hi sir i can't run the model with oldjob data. Can you help me please
@kianaghani9 ай бұрын
You are probably doing something wrong
@ShubhamTiwari-n8m9 ай бұрын
Can we further add any parts after getting the deformed geometry? or change the dimesions?
@kianaghani9 ай бұрын
You can add parts but you cannot change the dimensions of the mapped configuration.
@hschan942310 ай бұрын
Hi, nice video! Do you happen to have umat version instead of vumat?
@sanjeevkumar-id7ij11 ай бұрын
Sir, I am using combined hardning rule for steel damper subjected to cycle loading. I am trying to validate the results but I am getting high initial stiffness. Is there a way we can use reduced value of youngs modules for initial cycles and higher values for remaining cycles
@kianaghani11 ай бұрын
You can do whatever you want with this subroutine. However, the initial stiffness is related to elastic modulus.
@sanjeevkumar-id7ij11 ай бұрын
Thank you Sir
@karimmosli863711 ай бұрын
Thank sir for shearing this video
@siddheshkulkarni157211 ай бұрын
Why have u used state variables for stress input and not stress values are available at the start of the subroutine???
@kianaghani11 ай бұрын
I do not exactly follow your question.
@vishnuos4075 Жыл бұрын
Great work sir, In damage modeling using UMAT, the following error is coming.. ''Time increment required is less than minimum provided''. My model consist of more than one material. Once the damage reaches maximum value in one element this error is coming and other elements are not even reaching the peak stress.
@kianaghani11 ай бұрын
It is a convergence problem, and might have a lot of reasons.
@vishnuos40759 ай бұрын
Thank you for the reply sir. The UMAT was running successfully for the model. But it took almost one week to run the simulation. Then I have added some cohesive interactions in the model. Now my model is taking too much time to finish one increment. It may take even one month to complete the job.. I am modeling a unit cell of unidirectional composite.. Are there any methods to reduce the running time sir?
@chrisvila5258 Жыл бұрын
Hello is the code supplied by E.M. Paneda valid for any 3d geometry (thick bodies) or what are the limitations? Thanks in advance
@kianaghani Жыл бұрын
I believe you are mistaking this code with someone else’s.
@halenter3231 Жыл бұрын
Thank you very much for your tutorial. Btw, can we run the new model (step 2) directly on the software interface, basically press the button submit in job module?
@kianaghani Жыл бұрын
In my experience, when you press the submit button, the JOB hangs since you haven’t introduced the OLDJOB.
@halenter3231 Жыл бұрын
@@kianaghani thank you for your reply, you are right, it did not work. Btw, is this mapping solution applied only for ABAQUS/Standard? I have tried with ABAQUS/Explicit, but it did not work as well.
@kianaghani Жыл бұрын
@@halenter3231 As the manual says, it is currently available in standard only.
@karimmosli8637 Жыл бұрын
Hello sir kian ,can you please help me i have just small problem with abaqus
@kianaghani Жыл бұрын
State your problem here and I will try to help.
@karimmosli8637 Жыл бұрын
@@kianaghani Thank you very much for your response, sir. My problem is that I am simulating the behavior of a hyperelastic hollow sphere under internal pressure with a thickness parameter (eta) of 2, C10 value of 0.398, and a Poisson's ratio (v0) of 0.499. The model used is Neo-Hookean. I have obtained results for internal pressures up to Pi=0.1, 0.2, 0.3, 0.4, and 0.5. However, when I apply a pressure of Pi=0.6, 1, 2, or 3 Pascal, it doesn't work. I encounter this error: "Time required is less than the minimum specified."
@kianaghani Жыл бұрын
@@karimmosli8637 this is a standard issue, and may have several reasons. Maybe the load is too high.
@karimmosli8637 Жыл бұрын
@@kianaghani sir how I can solve this problem
@mahdisimyarian5651 Жыл бұрын
thank you in advaance
@mortazapirouz7482 Жыл бұрын
I have a question about VUEL-VUMAT, I guess since they may be similar to the case if UEL-VUMAT, I post it here, however I did not see any other video or forum to post my question. I am working on a VUEL-VUMAT for fracture analysis, where calculations are performed in VUEL, and the final results need to be exported to VUMAT for visualization. Here are the key points: 1. I have 80 nodes in total, and I defined a user-defined element with 5 to 13 nodes. After calculating the extension between nodes, I assign a value to each node representing the number of broken bonds. So, after the calculation, I have a matrix 'A' of size (80,1) for one time increment. The first column contains node numbers, and the second column represents the degree of damage. I assume that my nodes and integration points are the same, but corrections are welcome. 2. I created a module to share data files and access the matrix 'A' of size (80, 1) in VUMAT. Using a simple do loop, I assigned the values of matrix 'A' to 'statenew'. However, I couldn't see the results in Abaqus through SDV1. I assign one to one because I am using CPE4R element in the vumat to visualize: do k = 1, 80 statenew(k,1) = A(k) end do 3. I suspect the issue is related to using element CPE4R, which has reduced integration points (only 1 point) located at the middle of the element(?). The values assigned to 'statenew' are now at the corner nodes, which might be causing the problem(?) I am unsure whether I should directly assign 'A' to 'statenew' or create a new node list with different coordinates, forming 4 new nodes to represent the corner nodes around the statenew nodes. 4. At the end of step 2, I am able to see displacement, stress, strain, etc. interpolated using the node values, but I am struggling with how to assign the specific variable values to be shown through SDVs (State Dependent Variables). 5. Regarding the structure of 'statenew' (NBlock, NStatev), I have a question. Is it a simple 2D array? In comparison with UEL-UMAT structure, where we assign a 3D array to 'statev' for visualization in UMAT, I am confused. In the attachment file you will see my node and element distribution. Cross signs are VUEL elements, and in the background is VUMAT elements. As you see the value of SDV1 is 0 everwhere. MANY THANKS IN ADVANCE !
@kianaghani Жыл бұрын
There are some complications in your text. First, your A matrix has ONE column not two. Assuming that it is a typo error, you should write a code to make your integration points compatible with those of the CPE4R element. Statenew is a 2D array, while STATEV is a 1D array. Also, the way I used for visualization is not related to the size of STATEV.
@mortazapirouz7482 Жыл бұрын
@@kianaghani you are right, the size of A matrix is (80,2), including the nblock and the value for each block. Do you think if I implement the way you did it may work? I did once and no success, I may had a mistake in the input file somewhere. I will try again. Thank you !
@kianaghani Жыл бұрын
@@mortazapirouz7482 Theoretically, it should work but it will be hard.
@mortazapirouz7482 Жыл бұрын
@@kianaghani Thank you for the input. I got it work, the thing I was missing is doing a simple stress calculation in VUMAT for dummy elements. This let me to visualize whatever is assigned to statenew. BTW, your videos really helped me to figure out how to get it done. Thank you and keep up the great work !!
@kianaghani Жыл бұрын
@@mortazapirouz7482 Your welcome. If it is possible, share your subroutines ( or at least a part of it) with me for expanding the knowledge.
@rishiraj6242 Жыл бұрын
I want to use VDFLUX and VUSDFLD subroutine in one file. how to do this?
@kianaghani Жыл бұрын
Hi. Just copy the subs into one file with *.for format.