I have the same issue, but my geometry is not axissyemtric.
Having a moment with its normal following the curvature of a line seems like a simple ask. My application is for a curved structural beam.
Edit:
I was able to apply the moment as I intended using a Mechanical APDL block, APDL code, and excel.
First, I dragged the Mechanical APDL block onto the Model in the project schematic. I then edited the Mechanical APDL Analysis, and used file>save as. This made a copy of the entire model (including named selection for my edge).
Then, in APDL I used cmsel,s,edgeName and nlis to get the node list. I copied this list to excel, space delimted (300 nodes).
I then sorted the nodes in increasing z order.
1. I made a series of colunms for nsel,s,node,NodeNumber This selects each node individually. this gets dragged down for all nodes.
2. I made a column for the local,#,xcoord,ycoord,zcoord,0,thyz,0 command. This uses geometry to rotate the nodal coordinate system so that its aligned to its neighbour. I also set the origin of the coordinate to be the node xyz. This gets dragged down for every node.
3. set active coordinate system: csys,NodeCoordSys (from above) for every node. drag down.
4. generate a copy of the node at a particular distance away from the edge: This will be the normal direction because of the csys command previous. ngen,2,1000000,nodeNumber . Drag down for every node.
5. Run the nrot,all,all command each time you change csys (drag down for every node).
6. couple the offset node to the original node. cp,next,all,originalNodeNumber,OffsetNodeNumber (drag down for every node).
7. apply force to each node: f,NodeNumber,fz (force direction in its nodal coordinate system),value (drag down for every node).
Combine and sort all of these 7 steps so that they execute 1->7 for each node.
i.e.
nsel,s,node,,221007,,,,
local,20,0,3.125,-107.75,9.3758,0,90,0
csys,20,,,,,,,
ngen,2,1000000,221007,,,6,0,-1.5
cp,next,all,221007,1221007,,,,
nrot,all,all,,,,,,
f,1221007,fz,32.4202,,,,,
nsel,s,node,,221006,,,,
local,21,0,3.125,-107.75,9.7506,0,90,0
csys,21,,,,,,,
ngen,2,1000000,221006,,,6,0,-1.5
cp,next,all,221006,1221006,,,,
nrot,all,all,,,,,,
f,1221006,fz,32.4202,,,,,
….etc
Lastly, assign mass21 elements to the offset nodes. Otherwise, the couple won’t work. Assign an arbitrarly small mass using the real variable (r,1,massInSlinch).:
! Note: cannot use node coupling if the node isn’t attached to a element. Fix: add mass21 elements to free nodes (small mass)
!create,element,type,MASS21,,,,,,,,,,,,,,,
et,5,21,0,1,2,,,,,,,,,,,,,! select an unused element number (in my case 5)
!,,,,,,,,,,,,,,,,,,
!,Define,real,constants,according,to,MASS21,definition,in,the,APDL,Element,Reference,,,,,,
!r,#,mass,!if,kopt(3)=2,,,,,,,,,,,,,,
! mass,per,node=2.10313657437385E-06,slinch
r,1,2.10E-06,,,,,,,,,,,,,,,,
!,,,,,,,,,,,,,,,,,,
type,5,!choose,element,type,5,,,,,,,,,,,,,
real,1,!choose,real,constant,1,,,,,,,,,,,,,
!Define,elements,by,node,according,to,MASS21,definition,in,the,APDL,Element,Reference,,,,,,
en,1221007,1221007
en,1221006,1221006
… for each coupled node
Then, copy this entire pile of code into a command snippet just before the solve. Make sure to start the code snippet with
/prep7
and end the code with
allsel
/solu