Author Topic: VER84 comparability with user macros  (Read 7315 times)

M. Kurdi

  • Full Member
  • ***
  • Posts: 149
VER84 comparability with user macros
« on: January 10, 2014, 09:11:33 AM »
Hello,
I recently upgraded to ver8.4. I had some user macros developed under ver8.3. Now to run these macros in ver8.4 I added the umacr0.f to umacr4.f and also added ualloc.f. These are the only files I set when running the macros in ver8.3. The problem is that when running my input.dat file with the new commands it gives me an error

No procedure or command named .... exits

I do not think that I missed adding any macro files. Is there anything special I need to do so that ver84 recognizes the new commands specified in these macros and ualloc file?

On a side note: What is the difference between np(27) and np(30) both have same describtion in palloc.f
c              'F    ',     !    27: Nodal load/displacement, current
c              'F0   ',     !    28: Nodal load/displace pattern, base
c              'FPRO ',     !    29: DOF proportional load numbers
c              'FTN  ',     !    30: Nodal load/displacement, current


Thanks for your your help,

Mohammad

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
Re: VER84 comparability with user macros
« Reply #1 on: January 10, 2014, 10:27:06 AM »
User macros have two items that must match:  the "n" in the subroutine umacrn(...) and the register name 'macn' must be the same.  If you just changed the name of the routine then the match is lost and the command name you want is not registered.

The arrays store different items:  F stores the input data for the loads and displacements; F0 is a base value(normally zero); FPRO stores proportional load numbers for each load; and FTN is the load state computed from F and F0 using FPRO and proportional loading.  FTN is what is added to the residual for each iteration.

M. Kurdi

  • Full Member
  • ***
  • Posts: 149
Re: VER84 comparability with user macros
« Reply #2 on: January 10, 2014, 12:57:54 PM »
Professor Taylor,
Thanks for responding. Yes the user macro umacr0.f has a command word check using:
   if(pcomp(uct,'mac0',4)) then      ! Usual    form
       uct = 'OBJF'     
The 'OBJF' name is defined in the ualloc.f via

      data   (names(i),i=1,list)/

     &         'OBJF',
     &         'CONF',
     &         'ICON',
     &         'DOBJ'/

list is of size 4 here. I am not sure what is the cause of this error. Probably is not worth pursuing now and I should keep working with ver8.3.

Thanks for clarifying the meaning of the force/displacement arrays.
Best regard,

Mohammd

FEAP_Admin

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 993
Re: VER84 comparability with user macros
« Reply #3 on: January 10, 2014, 03:58:56 PM »
The setting of the name of a user define macro and the definition of user allocatable array are two different issues. 
There is no need to touch ualloc.f (that is for user defined arrays/memory).

I think the problem is that the numbering scheme has changed.; in ver83 the options were umacr0.f --> umacr9.f.  In ver84, they are umacr1.f --> umacr20.f.  No UMACR0.f!
Also,beware if you use user macros above 9.  In umacr10.f of example the pcomp is run against 'ma10'.

M. Kurdi

  • Full Member
  • ***
  • Posts: 149
Re: VER84 comparability with user macros
« Reply #4 on: January 10, 2014, 04:26:36 PM »
Thanks you are correct. I was just describing the whole process of transferring the user macros from ver8.3 to ver8.4.

Even if umcar0 is not there this does not explain why umacr1-3 do not work. In any case I generated umacr4 from umacr0 and changed name of subroutine to umacr4 as well as changing mac0 to mac4 but this did not take away that the command is not recognized.

However I found that for some reason this version is sensitive to the "case" of the command name. If the name is "OBJF" it will not be recognized. However change name to "objf" and it works now.

Thanks for following up.

FEAP_Admin

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 993
Re: VER84 comparability with user macros
« Reply #5 on: January 10, 2014, 05:01:39 PM »
hmmm...case should not be an issue as pcomp( ) compensates for case.  Have a look at program/pcomp.f.

M. Kurdi

  • Full Member
  • ***
  • Posts: 149
Re: VER84 comparability with user macros
« Reply #6 on: January 10, 2014, 06:12:44 PM »
You know I reverted to back to upper case and error did not return. The only other change I did is replacing the umacr0 with umacr4. Sorry that this doesn't help you a lot but I spent some time trying to figure this one out.

Also looking at the user directory of ver8.4 one can still see umacr0, umati0 etc, so if (0)s are not used anymore whey have a dummy version of them in the directory? Just a note.

Thanks again for helping out.

FEAP_Admin

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 993
Re: VER84 comparability with user macros
« Reply #7 on: January 11, 2014, 12:01:43 AM »
there should not be a umacr0.f in the user/ directory.  umati0.f however is still in use.