Skip to content

Commit 815f5f2

Browse files
committed
Merge branch 'large_field_fix' of github.com:MYSTRANsolver/MYSTRAN into upstream-main
2 parents d5a92af + 711cb5d commit 815f5f2

10 files changed

Lines changed: 395 additions & 344 deletions

File tree

Build_Test_Cases/buckling/bar.bdf

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
ID BAR BUCKLING
2+
SOL 5
3+
CEND
4+
$TITLE = EULER BUCKLING OF A CANTILEVERED-FREE BEAM
5+
$SUBTI = 10 CBAR ELEMENTS ALONG X AXIS, END LOAD
6+
ECHO = UNSORT
7+
DISP = ALL
8+
$ELFORCE(BOTH) = ALL
9+
$GPFORCE = ALL
10+
$MPCFORCE = ALL
11+
$OLOAD = ALL
12+
$SPCFORCE = ALL
13+
$STRESS = ALL
14+
$ELDATA(0,PRINT) = ALL
15+
$ELDATA(1,PRINT) = ALL
16+
$ELDATA(2,PRINT) = ALL
17+
$ELDATA(3,PRINT) = ALL
18+
$ELDATA(4,PRINT) = ALL
19+
$ELDATA(5,PRINT) = ALL
20+
SUBCASE 1
21+
LOAD = 10
22+
SUBCASE 2
23+
METHOD = 20
24+
BEGIN BULK
25+
$
26+
FORCE 10 2 -1. 1. 0. 0.
27+
$
28+
EIGRL 20 2 10. MAX +E1
29+
+E1 DGB
30+
$
31+
GRID 1 90. 0. 0. 123456
32+
GRID 2 100. 0. 0.
33+
$
34+
CBAR 10 1 1 2 0. 1. 0.
35+
$
36+
PBAR* 1 1 .500 .041666666666667*
37+
* 104.16666666667
38+
$
39+
MAT1 1 10.+6 .33 0.1 20.-6 0.
40+
$
41+
PARAM SOLLIB BANDED
42+
PARAM POST -1
43+
DEBUG 200 1
44+
$
45+
ENDDATA
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
ID BAR BUCKLING
2+
SOL 101
3+
CEND
4+
$TITLE = EULER BUCKLING OF A CANTILEVERED-FREE BEAM
5+
$SUBTI = 10 CBAR ELEMENTS ALONG X AXIS, END LOAD
6+
ECHO = UNSORT
7+
DISP = ALL
8+
$ELFORCE(BOTH) = ALL
9+
$GPFORCE = ALL
10+
$MPCFORCE = ALL
11+
$OLOAD = ALL
12+
$SPCFORCE = ALL
13+
$STRESS = ALL
14+
$ELDATA(0,PRINT) = ALL
15+
$ELDATA(1,PRINT) = ALL
16+
$ELDATA(2,PRINT) = ALL
17+
$ELDATA(3,PRINT) = ALL
18+
$ELDATA(4,PRINT) = ALL
19+
$ELDATA(5,PRINT) = ALL
20+
SUBCASE 1
21+
LOAD = 10
22+
BEGIN BULK
23+
$
24+
FORCE 10 2 -1. 1. 0. 0.
25+
$
26+
GRID 1 90. 0. 0. 123456
27+
GRID 2 100. 0. 0.
28+
$
29+
CBAR 10 1 1 2 0. 1. 0.
30+
$
31+
$1 2 3 4 5 6
32+
PBAR* 1 1 .500 .041666666666667*
33+
* 104.16666666667
34+
$
35+
MAT1 1 10.+6 .33 0.1 20.-6 0.
36+
$
37+
PARAM SOLLIB BANDED
38+
PARAM POST -1
39+
DEBUG 200 1
40+
$
41+
ENDDATA

Source/LK1/L1A-BD/BD_CBAR.f90

Lines changed: 55 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626

2727
SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
2828

29-
! Processes CBAR and CBEAM Bulk Data Cards:
30-
29+
! Processes CBAR and CBEAM Bulk Data Cards:
3130
USE PENTIUM_II_KIND, ONLY : BYTE, LONG, DOUBLE
3231
USE IOUNT1, ONLY : WRT_ERR, WRT_LOG, ERR, F04, F06
3332
USE SCONTR, ONLY : BLNK_SUB_NAM, FATAL_ERR, IERRFL, JCARD_LEN, JF, LBAROFF, LVVEC, MEDAT_CBAR, &
@@ -80,55 +79,50 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
8079
ENDIF
8180

8281
! **********************************************************************************************************************************
83-
! CBAR element Bulk Data Card routine
84-
85-
! FIELD ITEM ARRAY ELEMENT
86-
! ----- ------------ -------------
87-
! 1 Element type ETYPE(nele) =B1 for CBAR
88-
! 2 Element ID EDAT(nedat+1)
89-
! 3 Property ID EDAT(nedat+2)
90-
! 4 Grid A EDAT(nedat+3)
91-
! 5 Grid B EDAT(nedat+4)
92-
! 6-8 V-Vector (see VVEC explanation below)
93-
! V vector key goes in EDAT(nedat+5)
94-
! on optional second card:
95-
! 2 Pin Flag A EDAT(nedat+6)
96-
! 3 Pin Flag B EDAT(nedat+7)
97-
! 4-9 Offsets (see BAROFF explanation below)
98-
! Offset key goes in EDAT(nedat+8)
99-
100-
! NOTES:
101-
102-
! If fields 3, 6-8 are blank, they are loaded with the data from the BAROR/BEAMOR entry (these will remain blank if
103-
! no BAROR/BEAMOR card exists). If V-vector is specfied via a grid point then EDAT(nedat+5) is set to that grid number.
104-
! If V-vector is specified via an actual vector, the vector is loaded into array VVEC(NVVEC,J) (J=1,2,3) unless
105-
! a vector equal to it has been put in VVEC. EDAT(nedat+5) is set equal to -NVVEC, where NVVEC is the row number
106-
! in array VVEC.
107-
108-
! Offsets are in fields 4 - 9 of the first continuation card. If there are any offsets for this element, they are written to
109-
! array BAROFF in row NBAROFF and NBAROFF is written in EDAT(nedat+8). If there are no offsets for this element, a zero is entered
110-
! in array EDAT(nedat+8).
111-
82+
! CBAR element Bulk Data Card routine
83+
84+
! FIELD ITEM ARRAY ELEMENT
85+
! ----- ------------ -------------
86+
! 1 Element type ETYPE(nele) =B1 for CBAR
87+
! 2 Element ID EDAT(nedat+1)
88+
! 3 Property ID EDAT(nedat+2)
89+
! 4 Grid A EDAT(nedat+3)
90+
! 5 Grid B EDAT(nedat+4)
91+
! 6-8 V-Vector (see VVEC explanation below)
92+
! V vector key goes in EDAT(nedat+5)
93+
! on optional second card:
94+
! 2 Pin Flag A EDAT(nedat+6)
95+
! 3 Pin Flag B EDAT(nedat+7)
96+
! 4-9 Offsets (see BAROFF explanation below)
97+
! Offset key goes in EDAT(nedat+8)
98+
99+
! NOTES:
100+
101+
! If fields 3, 6-8 are blank, they are loaded with the data from the BAROR/BEAMOR entry (these will remain blank if
102+
! no BAROR/BEAMOR card exists). If V-vector is specfied via a grid point then EDAT(nedat+5) is set to that grid number.
103+
! If V-vector is specified via an actual vector, the vector is loaded into array VVEC(NVVEC,J) (J=1,2,3) unless
104+
! a vector equal to it has been put in VVEC. EDAT(nedat+5) is set equal to -NVVEC, where NVVEC is the row number
105+
! in array VVEC.
106+
107+
! Offsets are in fields 4 - 9 of the first continuation card. If there are any offsets for this element, they are written to
108+
! array BAROFF in row NBAROFF and NBAROFF is written in EDAT(nedat+8). If there are no offsets for this element, a zero is entered
109+
! in array EDAT(nedat+8).
112110
EPS1 = EPSIL(1)
113111

114-
! Make JCARD from CARD
115-
112+
! Make JCARD from CARD
116113
CALL MKJCARD ( SUBR_NAME, CARD, JCARD )
117114
BAR_OR_BEAM = JCARD(1)
118115
ELID = JCARD(2)
119116

120-
! Set JCARD_EDAT to JCARD
121-
117+
! Set JCARD_EDAT to JCARD
122118
DO I=1,10
123119
JCARD_EDAT(I) = JCARD(I)
124120
ENDDO
125121

126-
! Initialize variables
127-
122+
! Initialize variables
128123
VVEC_TYPE = 'UNDEFINED'
129124

130-
! Check property ID field. Set to BAROR prop ID, if present, or to this elem ID, if not
131-
125+
! Check property ID field. Set to BAROR prop ID, if present, or to this elem ID, if not
132126
IF (JCARD(3)(1:) == ' ') THEN ! Prop ID field is blank, so use one of the following:
133127
IF (BAR_OR_BEAM(1:4) == 'CBAR') THEN
134128
IF (BAROR_PID /= 0) THEN ! Use BAROR prop ID for this CBAR prop ID
@@ -145,8 +139,7 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
145139
ENDIF
146140
ENDIF
147141

148-
! Call ELEPRO to increment NELE and load some of the connection data into array EDAT
149-
142+
! Call ELEPRO to increment NELE and load some of the connection data into array EDAT
150143
IF (BAR_OR_BEAM(1:4) == 'CBAR') THEN
151144
CALL ELEPRO ( 'Y', JCARD_EDAT, 4, MEDAT_CBAR , 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N' )
152145
NCBAR = NCBAR+1
@@ -157,9 +150,9 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
157150
ETYPE(NELE) = 'BEAM '
158151
ENDIF
159152

160-
! Get the V vector for this CBAR/CBEAM (either from this CBAR/CBEAM or from BAROR/BEAMOR values, if present)
161-
162-
DO J=1,3 ! Null all components. Some may be read from CBAR card
153+
! Get the V vector for this CBAR/CBEAM (either from this CBAR/CBEAM or from BAROR/BEAMOR values, if present)
154+
! Null all components. Some may be read from CBAR card
155+
DO J=1,3
163156
VV(J) = ZERO
164157
ENDDO
165158

@@ -178,7 +171,8 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
178171
ENDIF ! check case where fields 6, 7, 8 are blank below
179172
ENDIF
180173
ELSE
181-
IF (NBEAMOR > 0) THEN ! Set VVEC fields to BEAMOR values if this CBEAM's VVEC fields are blank
174+
IF (NBEAMOR > 0) THEN
175+
! Set VVEC fields to BEAMOR values if this CBEAM's VVEC fields are blank
182176
IF ((JCARD(6)(1:) == ' ') .AND. (JCARD(7)(1:) == ' ') .AND. (JCARD(8)(1:) == ' ')) THEN
183177
IF (BEAMOR_VVEC_TYPE == 'GRID ') THEN
184178
VVEC_TYPE = 'BEAMOR_GRD'
@@ -200,7 +194,8 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
200194
EXIT
201195
ENDIF
202196
ENDDO
203-
IF (VVEC_TYPE == 'VECTOR ') THEN ! If there is an actual V vector, get components
197+
IF (VVEC_TYPE == 'VECTOR ') THEN
198+
! If there is an actual V vector, get components
204199
LVVEC = LVVEC + 1
205200
JERR = 0
206201
DO J=1,3
@@ -244,8 +239,7 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
244239
ENDIF
245240
ENDIF
246241

247-
! Load V vector data into EDAT and into VVEC, if not already there
248-
242+
! Load V vector data into EDAT and into VVEC, if not already there
249243
IF ((VVEC_TYPE == 'GRID ') .OR. (VVEC_TYPE == 'BAROR_GRD')) THEN
250244

251245
NEDAT = NEDAT + 1
@@ -278,27 +272,25 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
278272

279273
NEDAT = NEDAT + 1
280274
EDAT(NEDAT) = -VVEC_NUM
281-
282275
ENDIF
283276

284-
! Write warnings and errors if any
285-
277+
! Write warnings and errors if any
286278
CALL BD_IMBEDDED_BLANK ( JCARD,2,3,4,5,6,7,8,0 ) ! Make sure that there are no imbedded blanks in fields 2-8
287279
CALL CARD_FLDS_NOT_BLANK ( JCARD,0,0,0,0,0,0,0,9 )
288280
CALL CRDERR ( CARD ) ! CRDERR prints errors found when reading fields
289281

290-
! Optional Second Card:
291-
282+
! Optional Second Card:
292283
IF (LARGE_FLD_INP == 'N') THEN
293284
CALL NEXTC ( CARD, ICONT, IERR )
294285
ELSE
295286
CALL NEXTC2 ( CARD, ICONT, IERR, CHILD )
296287
CARD = CHILD
297288
ENDIF
298289
CALL MKJCARD ( SUBR_NAME, CARD, JCARD )
299-
IF (ICONT == 1) THEN
300290

301-
DO J = 2,3 ! Get pin flag data, if present
291+
IF (ICONT == 1) THEN
292+
DO J = 2,3
293+
! Get pin flag data, if present
302294
IF (JCARD(J)(1:) /= ' ') THEN
303295
CALL IP6CHK ( JCARD(J), JCARDO, IP6TYP, IDUM )
304296
IF (IP6TYP == 'COMP NOS') THEN
@@ -313,19 +305,22 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
313305
WRITE(F06,1130) JCARD(J) ,J, JCARD(1), ELID
314306
ENDIF
315307
ELSE
316-
NEDAT = NEDAT + 1 ! Null EDAT for this pin flag
308+
! Null EDAT for this pin flag
309+
NEDAT = NEDAT + 1
317310
EDAT(NEDAT) = 0
318311
ENDIF
319312
ENDDO
320-
! Get offsets, if present
313+
314+
! Get offsets, if present
321315
IF ((JCARD(4)(1:) /= ' ') .OR. (JCARD(5)(1:) /= ' ') .AND. (JCARD(6)(1:) /= ' ') .OR. (JCARD(7)(1:) /= ' ') .AND. &
322316
(JCARD(8)(1:) /= ' ') .OR. (JCARD(9)(1:) /= ' ')) THEN
323317
NBAROFF = NBAROFF + 1
324318
IF (NBAROFF > LBAROFF) THEN
319+
! Coding error, so quit
325320
FATAL_ERR = FATAL_ERR + 1
326321
WRITE(ERR,1161) SUBR_NAME, JCARD(1), LBAROFF
327322
WRITE(F06,1161) SUBR_NAME, JCARD(1), LBAROFF
328-
CALL OUTA_HERE ( 'Y' ) ! Coding error, so quit
323+
CALL OUTA_HERE ( 'Y' )
329324
ENDIF
330325
NEDAT = NEDAT + 1
331326
EDAT(NEDAT) = NBAROFF
@@ -336,10 +331,9 @@ SUBROUTINE BD_CBAR ( CARD, LARGE_FLD_INP )
336331
ENDIF
337332
ENDDO
338333
ELSE
339-
340-
NEDAT = NEDAT + 1 ! Null EDAT for the offset flag
334+
! Null EDAT for the offset flag
335+
NEDAT = NEDAT + 1
341336
EDAT(NEDAT) = 0
342-
343337
ENDIF
344338

345339
CALL BD_IMBEDDED_BLANK ( JCARD,0,0,4,5,6,7,8,9 ) ! Make sure that there are no imbedded blanks in fields 4-9

0 commit comments

Comments
 (0)